Android:从单独的线程 class 更新 UI
Android: Updating UI from thread in separate class
在更新单独的 class 之后,我正在尝试更新我的应用程序中的几个 UI 元素。单独的 class 既不是 activity 也不是片段。谁能指出我正确的方向?处理程序在这里工作得很好吗,如果可以的话,你能给我指出一个可接受的处理程序示例吗?
您不能从与主线程不同的线程更新任何 UI 元素。如果您使用的是主线程,则可以将视图传递给另一个 class 中的方法并对其进行一些更改。
您可以单独使用它 class。
public void setView(Activity activity, View view) {
activity.runOnUiThread(new Runnable() {
public void run()
{
/update your view here
}
});
}
如果您愿意,您可以从 activity 变量获取视图,而不是传递视图。
您需要 link 将两个 class 结合在一起,方法可能是实现一个回调机制,该机制将使用处理程序处理到您的主应用程序线程中,假设您的外部 class可以使用 Activity class 注册回调。
或者更简单地说,您可以通过允许将引用从 Activity 传递到您的另一个 class 来使用上下文,但您要确保不泄漏上下文。
在更新单独的 class 之后,我正在尝试更新我的应用程序中的几个 UI 元素。单独的 class 既不是 activity 也不是片段。谁能指出我正确的方向?处理程序在这里工作得很好吗,如果可以的话,你能给我指出一个可接受的处理程序示例吗?
您不能从与主线程不同的线程更新任何 UI 元素。如果您使用的是主线程,则可以将视图传递给另一个 class 中的方法并对其进行一些更改。
您可以单独使用它 class。
public void setView(Activity activity, View view) {
activity.runOnUiThread(new Runnable() {
public void run()
{
/update your view here
}
});
}
如果您愿意,您可以从 activity 变量获取视图,而不是传递视图。
您需要 link 将两个 class 结合在一起,方法可能是实现一个回调机制,该机制将使用处理程序处理到您的主应用程序线程中,假设您的外部 class可以使用 Activity class 注册回调。
或者更简单地说,您可以通过允许将引用从 Activity 传递到您的另一个 class 来使用上下文,但您要确保不泄漏上下文。