0

我试图在更新单独的类后更新我的应用中的几个UI元素。单独的类既不是活动也不是片段。任何人都可以将我指向正确的方向吗?一个处理程序是否能在这里很好地工作,如果可以的话,你能指向一个可接受的处理程序例子吗Android:从单独的类中的线程更新UI

回答

1

你可以在separe类中使用它。

public void setView(Activity activity, View view) { 
activity.runOnUiThread(new Runnable() { 
      public void run() 
      { 
       /update your view here 
      } 
     }); 
    } 

如果您是前提,您可以从您的活动变量中获取视图,而不是传递视图。

+0

我真的需要另一个线程来更新几个UI元素吗?同样为了这个工作,我必须存储对我的活动的引用以及在课堂中的视图;这些都不会被允许或导致安全问题? –

+0

另外我的单独的类有一个对我想要更新的TextView的引用。 –

+0

是的,你需要,因为它需要在UiThread上运行到UI上的任何更新。没有安全问题。我看到的'问题'并不是最好的实践,因为你正在从事另一个班级的活动,应该在活动中完成。 –

0

您不能从主线程以外的其他线程更新任何UI元素。如果您正在使用主线程,则可以将视图传递给其他类中的方法,并对其进行一些更改。

0

如果您的外部类可以使用Activity类注册回调,您需要将两个类连接在一起,方法可能是实现一个回调机制,该机制将使用处理程序处理到主应用程序线程中。

或者更简单地说,您可以通过允许从Activity传递引用到其他类的方式来使用上下文,但是您希望确保不泄漏上下文。