我正在写一个简单的提醒应用。所有提醒都存储在数据库中。我有一个服务,查询数据库,并在AlarmManager中与额外的和不同的时间戳的pendingIntents。我也有一个广播接收器来捕捉来自AlarmManager的意图。该广播接收器开始具有提醒选项的提醒活动(解除、休眠等)。现在这个方案起作用了,但并不像我认为的那样好。如果我在前台有一个提醒活动,那么新的提醒活动就会在它上面开始(当前转到后台)。我不想用新的活动覆盖当前的活动,而只是通知用户,在当前活动之后会显示一些新的提醒。
发布于 2013-02-10 22:51:38
我想,我已经为我的任务找到了一个很好的解决方案:
1)我在AndroidManifest中设置了我的提醒活动launchMode为"singleTop“。关于launchMode的更多信息在这里http://developer.android.com/guide/topics/manifest/activity-element.html两个字,如果我的广播接收器试图启动已经在前台的活动,它将调用onNewIntent,而不是onCreate。
2)在我的活动中,我必须覆盖onNewIntent方法,并在ArrayList中存储所有传入的意图(来自广播)。
3)在finish()之前,我必须从ArrayList中删除当前意图,当它的大小变为零时,我实际上已经完成了activity ()。
一个重要的补充。在广播接收器中,意图必须有FLAG_ACTIVITY_SINGLE_TOP,如:
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_SINGLE_TOP);
如果没有它,如果没有主活动,onNewIntent将不会被调用。正如我所看到的,这是一个已知的问题:在Android1.6中发现了http://code.google.com/p/android/issues/detail?id=4155错误,并且仍然存在。因此,现在它是功能:)
对不起,我的英文很容易读,但很难写:)
https://stackoverflow.com/questions/14776698
复制相似问题