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也是能够实现的。这里只是简单提一下,知道就行,不过不要这么做。