0

全部:

我正在研究具有与其他实例变量一起声明和实例化的处理程序的代码:

public class SomeActivity extends Activity {
    Handler handler = new Handler();  // What thread is this taking place on?
    // rest of class omitted
}

那么它是在 UI 线程上实例化的吗?我希望如此,因为它用于将 Runnable 发布到 ProgressBar,而我的理解是 ProgressBar 应该只在 UI Thread 上进行操作。

Android 文档说在 onCreate() 中创建的东西是:

应用程序的活动在应用程序的 UI 线程上运行。一旦 UI 被实例化,例如在 Activity 的 onCreate() 方法中,那么与 UI 的所有交互都必须在 UI 线程中运行。”

但这发生在 onCreate() 之前。

感谢您提供任何信息,

迈克尔

4

2 回答 2

0

那么它是在 UI 线程上实例化的吗?

是的。处理程序将存在于创建它的线程中。您正在主 / UI 线程上创建您的,因此它可以访问 UI 元素。

但这发生在 onCreate() 之前。

这不会影响 Handler 在哪个线程上运行。

于 2012-12-21T18:47:14.543 回答
0

除非您专门在后台线程上运行它,否则一切都发生在主线程(也称为 UI 线程)上。所以,是的,您的 Handler 是在 UI 线程中创建的。

于 2012-12-21T18:48:31.057 回答