我正在开发一个android应用程序,在一个活动中,当用户按下HOME按钮时,会出现一个通知。按下通知后,活动将从停止的地方恢复。问题是每次都会重新创建活动。一旦按下通知CCD_ 1,然后调用CCD_。但如果我通过"最近的应用程序"重新打开活动,它就会成功恢复。
这个问题以前在stackoverflow上被问过,我尝试过提供的答案,但似乎都不起作用。我使用的API是最新的4.4。我尝试过的选项有:
- 使用Intent标志
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP| Intent.FLAG_ACTIVITY_SINGLE_TOP);
- 将活动设置为
singleInstance
和singleTask
如何模拟通过"最近的应用程序"打开活动时发送的意图?
编辑:还有一个可能很重要的警告。在我的程序A B C中有3个活动。当点击启动器图标时,活动A第一次启动。只有从活动C转到主页时才会创建通知。我正试图恢复活动C.
问题已解决
我通过LogCat调试应用程序,并查看ActivityManager生成的意图。每当我更改Intent的标志时,我都不会在LogCat中看到更改。所以
02-12 11:26:39.586: I/ActivityManager(766): START u0 {flg=0x1000c000 cmp=com.example.app/.controllers.Activity3 bnds=[0,153][1080,345]} from pid -1
更改Intent标志不会更改日志中的flg变量。除此之外,通知图像保留在状态栏中,我的应用程序没有破坏它。我所做的是将PendingIntent.FLAG_CANCEL_CURRENT
标志添加到我发送的PendingIntent中:
Intent intent = new Intent(this, Activity3.class);
intent.setFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
PendingIntent pendingIntent = PendingIntent.getActivity(this, 0,
intent, PendingIntent.FLAG_CANCEL_CURRENT);
mBuilder.setContentIntent(pendingIntent);
所以问题是一个错误的PendingIntent,我以前一定创建过,但从未被删除。现在,我可以通过单击通知来恢复活动。希望这能帮助到可能有类似问题的人。