Android Handler消息传递机制详解(4)

1 Caused by: java.lang.NullPointerException
2            at android.os.Handler.<init>(Handler.java:234)
3            at android.os.Handler.<init>(Handler.java:142)
4            at com.example.administrator.handlertest.MainActivity$1.<init>(MainActivity.java:24)
5            at com.example.administrator.handlertest.MainActivity.onCreate(MainActivity.java:24)
6            at android.app.Activity.performCreate(Activity.java:5211)
7            at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1151)
8            at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2341) 

从异常信息第4行中可以看出:onCreate()方法第24行thread.looper是一个null.这时因为还没等新线程创建Looper,Handler就已经创建了。如果在第23行thread.start()后面休眠几秒就不会报空指针异常了。

最后补充一点,Android判断当前更新UI的线程是否是主线程的对象ViewRootImpl对象在onResume()中,所以只要子线程在onResume()之前完成更新UI也是能够实现的。这里只是简单提一下,知道就行,不过不要这么做。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/b6d25354526072f57dde4f693ff7632b.html