Android怎么实现从桌面点击图标后返回上一次退出该应用的状态

android应用默认好像是每次点击桌面图标都是启动的主Activity,现在我在APP中跳转到某个界面后直接按Home键后退到了桌面,我想再次点击图标直接跳转到上次退出时的那个Activty且状态与退出时完全一致,要怎么来实现哦!

测试最奇怪的就是在开发环境下launch运行到手机中,使用Home返回桌面,再次点击应用程序就是可以返回之前的状态的,多次测试都是正常的;但是当我打包签名之后,发送到手机上使用这个签名的APK来测试就会出现每次点击应用程序图标都会运行MainActivity,之前的界面就在这个MainActivity之下,即结束这个MainActivty就会出现之前的界面。
启动多少次就要多少了MainActivity,我也是醉了啊~~~~就是返不回之前的状态。

阅读 20.5k
7 个回答

今天刚好碰到了这个问题,搜到了这个帖子,看到正确答案却被忽略,感到真理有时候是和我们擦肩而过啊!
我通过楼主的这句话“当我打包签名之后,发送到手机上使用这个签名的APK来测试就会出现每次点击应用程序图标都会运行MainActivity,之前的界面就在这个MainActivity之下,即结束这个MainActivty就会出现之前的界面。”猜想到楼主的操作应该是这样的:
1、通过手机上的QQ或者文件夹之类的打开应用,进入到了第一个页面A,点击进入第二个界面B;
2、这时点Home键,返回桌面;
3、点击该应用图标,出现的不是页面B而是页面A;这也许就是楼主的问题;

答案是这样的:
系统判断显示是否显示该处于后台应用Task的页面是根据Intent的信息,必须完全一样,它才认为是应用是被同一个应用启动的(可能有些绕口);
当你从QQ或者文件夹管理器打开 你的应用后,暂停到后台,又从桌面应用(桌面也是一个应用)打开你的应用;这是从两个应用打开的同一个应用,但是系统判断出了不是从一个起点打开的,所以第二次又给你打开了默认的首界面!

请参考:这里

跳转的那个界面是你app中的吗?你需要看一下Activity的四中启动模式,会对你有帮助的。

你手机是不是开启"不保留后台任务"了?

一般情况下,再次点击图标就是直接跳转到上次退出时的那个Activty。但是,也有一些异常情况,例如android系统认为内存不够用了,就清理了某些比较占内存的activity。
这种情况下,系统本身就不会给你恢复回去了。
如果你确实希望再次跳转到该状态,就只能靠自己来记录app的工作状态了,在再次启动后,读取状态,自动跳转。

你可以在 app 的主 activity设置为singletask=true 单任务模式,理论上说:点击app icon重新启动app 进入app的主activity 这是做了 压栈的操作,当你点击back退出这次启动的activity时 又做了出栈的操作,
这个时候如果你上次 在运行此app时 按下home键将此次app实例切换为后台任务, 就会弹出上次按下home键 切换为后台的app实例,应该就是你描述的情况。

这个要解决,理论上 设置 入口activity 的singletask 为 true ,在你点击app icon 启动app时 管理器应该会根据这个app的签名 查找此app 是否有正在运行的 实例,如果有就切换为前台任务,如果没有就重新启动。

应该就是一个 程序 单实例 的问题。

这是Android的一个bug,root后静默安装就不会出现。
解决方法,在你的mainActivity的onCreate中加上

`if (!isTaskRoot()) {
    finish();
    return;
}`
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题