繁体   English   中英

从通知恢复android中的活动

[英]Resuming an activity in android from notification

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

之前在stackoverflow上已经问过这个问题,我已经尝试了提供的答案,但似乎都没有用。 我使用的API是最新的4.4。 我尝试过的选项是:

  • 玩意向标记

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

  • 将活动设置为singleInstancesingleTask

我如何模仿通过“最近的应用”打开活动时发送的意图?

编辑:可能需要注意的另一项警告。 我的程序AB 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,并且从未删除过。 现在,我可以通过单击通知来恢复活动。 希望这对可能遇到类似问题的人有所帮助。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM