从通知中恢复android中的活动

时间:2014-02-12 15:48:51

标签: android android-activity resume

我正在开发一个Android应用程序,在一个活动中,当用户按下HOME按钮时,会出现一个通知。按下通知后,活动将从停止的位置恢复。问题是每次都重新创建活动。按下通知onDestroy()然后调用onCreate()。但是如果我通过“最近的应用程序”重新打开活动,它会成功恢复。

之前在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.

1 个答案:

答案 0 :(得分:0)

问题解决了。

我正在通过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,它永远不会被删除。现在,我可以通过单击通知来恢复活动。希望这有助于可能有类似问题的人。