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

浏览:42日期:2022-12-02

问题描述

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

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

问题解答

回答1:

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

回答2:

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

回答3:

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

回答4:

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

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

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

回答5:

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

`if (!isTaskRoot()) { finish(); return;}`回答6:

这个事件触发的原因是:安装完程序点击打开后,点击HOME键退回到桌面,再点击图标进入程序原因应该是intent携带的信息不一样导致的解决方法:

@Override public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);//这是为了应用程序安装完后直接打开,按home键退出后,再次打开程序出现的BUGif ((getIntent().getFlags() & Intent.FLAG_ACTIVITY_BROUGHT_TO_FRONT) != 0) { finish(); return; }

}

相关文章: