最近,我遇到了越来越多的错误,这些错误对于有经验的人来说似乎很容易,但对我来说却很难弄清楚。
我正在尝试创建一个后台服务,每 X 分钟检查一次新的提要条目。因此,我从服务开始一个循环,并且该循环创建了一个异步任务。
它在我的 4.1 手机上就像一个魅力,但在我的 2.3 模拟器上,它提供了以下力量关闭:
09-11 19:53:35.905: E/AndroidRuntime(354): FATAL EXCEPTION: AppConstructorPushLoop
09-11 19:53:35.905: E/AndroidRuntime(354): java.lang.ExceptionInInitializerError
09-11 19:53:35.905: E/AndroidRuntime(354): at com.appconstructor.actest.PushNotificationService$1.run(PushNotificationService.java:54)
09-11 19:53:35.905: E/AndroidRuntime(354): at java.util.Timer$TimerImpl.run(Timer.java:284)
09-11 19:53:35.905: E/AndroidRuntime(354): Caused by: java.lang.RuntimeException: Can't create handler inside thread that has not called Looper.prepare()
09-11 19:53:35.905: E/AndroidRuntime(354): at android.os.Handler.<init>(Handler.java:121)
09-11 19:53:35.905: E/AndroidRuntime(354): at android.os.AsyncTask$InternalHandler.<init>(AsyncTask.java:421)
09-11 19:53:35.905: E/AndroidRuntime(354): at android.os.AsyncTask$InternalHandler.<init>(AsyncTask.java:421)
09-11 19:53:35.905: E/AndroidRuntime(354): at android.os.AsyncTask.<clinit>(AsyncTask.java:152)
09-11 19:53:35.905: E/AndroidRuntime(354): ... 2 more
我意识到这通常意味着我正在尝试在非 UI 线程中执行 UI 操作,但事实并非如此。事实上,即使我注释掉 ASyncTask 中的所有活动,它仍然会强制关闭。当我注释掉开始循环的行时,它只会停止强制关闭
这只发生在我的 2.3 模拟器上,与我使用的 4.0 样式通知无关。
有人会对此有更多了解吗?
谢谢!
编辑-> 如果我调用 Looper.prepare() 我会得到每个线程可能只发生一次的错误。