Android,实例化实例变量,什么线程?

Android,实例化实例变量,什么线程?,android,multithreading,handler,android-progressbar,Android,Multithreading,Handler,Android Progressbar,全部: 我正在研究具有一个处理程序的代码,该处理程序与其他实例变量一起声明和实例化: public class SomeActivity extends Activity { Handler handler = new Handler(); // What thread is this taking place on? // rest of class omitted } 那么它是在UI线程上实例化的吗?我希望如此,因为它用于将Runnable发布到ProgressBar,我

全部:

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

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线程上操作

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

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

但这是在onCreate()之前发生的

谢谢你提供的任何信息

迈克尔

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

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

但这是在onCreate()之前发生的


这不会影响处理程序在哪个线程上运行。

除非您专门在后台线程上运行,否则所有操作都发生在主线程(也称为UI线程)上。因此,是的,您的处理程序是在UI线程中创建的。

onCreate()之前除了初始化类级字段外,没有任何操作。您有一个新的处理程序(),它将不起任何作用。Runnable发布到了哪里?回答您的问题,因为处理程序是在活动上下文中声明的,所以它的Runnable将在UI线程上运行。如果它没有声明,并且它触及了视图,则会引发异常。感谢您的解释。处理程序没有很好的文档记录,但是如果您感兴趣的话在关于处理器和活套的更长、更专业的解释中,这是一个很好的例子。