[英]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);
singleInstance
和singleTask
我如何模仿通过“最近的应用”打开活动时发送的意图?
编辑:可能需要注意的另一项警告。 我的程序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.