Android 与通知和IntentService相关的异步任务问题
我有一个很奇怪的问题。我正在服务中设置通知以启动活动。当活动启动时,将启动一个Android 与通知和IntentService相关的异步任务问题,android,Android,我有一个很奇怪的问题。我正在服务中设置通知以启动活动。当活动启动时,将启动一个AsyncTask。以下是我设置通知的方式: CharSequence tickerText = getString(R.string.notificationTextUpdates); CharSequence contentText = getString(R.string.app_name); Notification notification = new Notification(icon,
AsyncTask
。以下是我设置通知的方式:
CharSequence tickerText = getString(R.string.notificationTextUpdates);
CharSequence contentText = getString(R.string.app_name);
Notification notification = new Notification(icon,
tickerText, System.currentTimeMillis());
Intent notificationIntent = new Intent(
getApplicationContext(), MyActivity.class);
PendingIntent contentIntent = PendingIntent
.getActivity(getBaseContext(), 0,
notificationIntent, 0);
notification.setLatestEventInfo(getApplicationContext(),
tickerText, contentText, contentIntent);
notifManager.notify(0, notification);
如果应用程序正在运行,一切正常,但如果它以前没有运行,则不会触发AsyncTask的onPostExecute
方法。相反,我得到了以下异常:
09-30 16:07:52.500:警告/消息队列(27729):
java.lang.RuntimeException:处理程序{4057ec78}正在向
死线程上的处理程序09-30 16:07:52.500:WARN/MessageQueue(27729):
在android.os.MessageQueue.enqueueMessage(MessageQueue.java:196)09-30
16:07:52.500:警告/消息队列(27729):在
android.os.Handler.sendMessageAtTime(Handler.java:457)09-30
16:07:52.500:警告/消息队列(27729):在
android.os.Handler.sendMessageDelayed(Handler.java:430)09-30
16:07:52.500:警告/消息队列(27729):在
android.os.Handler.sendMessage(Handler.java:367)09-30 16:07:52.500:
警告/消息队列(27729):位于
android.os.Message.sendToTarget(Message.java:350)09-30 16:07:52.500:
警告/消息队列(27729):位于
android.os.AsyncTask$3.done(AsyncTask.java:214)09-30 16:07:52.500:
警告/消息队列(27729):位于
java.util.concurrent.FutureTask$Sync.innerSet(FutureTask.java:253)
09-30 16:07:52.500:警告/消息队列(27729):在
java.util.concurrent.FutureTask.set(FutureTask.java:113)09-30
16:07:52.500:警告/消息队列(27729):在
java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:311)
09-30 16:07:52.500:警告/消息队列(27729):在
java.util.concurrent.FutureTask.run(FutureTask.java:138)09-30
16:07:52.500:警告/消息队列(27729):在
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1088)
09-30 16:07:52.500:警告/消息队列(27729):在
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:581)
奇怪的是,当我在另一个活动中设置相同的通知时,并没有发生,所以一切都按预期进行
我很困惑。我的活动在单任务模式下运行,我也尝试了单顶端模式,基本上没有改变任何东西。请参阅,这可能是问题的根本原因。它包括一个解决此问题的方法。我认为您将线程和处理程序放在一起了?????请您再解释一下,好吗?编写完整的代码………没有更多的代码了。“onCreate”方法启动另一个方法,该方法执行异步任务。我可以跟踪“doInBackground”方法,但鉴于所描述的情况,“onPostExecute”不会触发。摆脱
单个任务
(如果需要,替换为挂起内容
中你的意图
上的标记活动
)。摆脱getApplicationContext()
(替换为this
)。摆脱getBaseContext()
(替换为this
)。看看这些是否有用。