从通知中恢复android中的活动



我正在开发一个android应用程序,在一个活动中,当用户按下HOME按钮时,会出现一个通知。按下通知后,活动将从停止的地方恢复。问题是每次都会重新创建活动。一旦按下通知CCD_ 1,然后调用CCD_。但如果我通过"最近的应用程序"重新打开活动,它就会成功恢复。

这个问题以前在stackoverflow上被问过,我尝试过提供的答案,但似乎都不起作用。我使用的API是最新的4.4。我尝试过的选项有:

  • 使用Intent标志

intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP| Intent.FLAG_ACTIVITY_SINGLE_TOP);

  • 将活动设置为singleInstancesingleTask

如何模拟通过"最近的应用程序"打开活动时发送的意图?

编辑:还有一个可能很重要的警告。在我的程序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,我以前一定创建过,但从未被删除。现在,我可以通过单击通知来恢复活动。希望这能帮助到可能有类似问题的人。

最新更新