【Android】解决安装完 APK 后点打开然后回到桌面再点图标打开 APP 出现 activity 重建的问题
2017-03-23 14:21
691 查看
其实这个问题是在某开发群里聊天的时候有人提出来的,然后试了试自己负责的项目,结果确实是有这个问题,下面就来说说这个问题。
首先先说清楚重现过程:
在安装新 APK 或者升级已安装 APP 后将会出现安装完成的页面,该页面其中会提供两个按钮,一个是“完成”,另一个是“打开”。其中如果选了“完成”,那什么事都不会发生,但如果选了“打开”,就会打开 APP ,这时候按 HOME 键回到桌面,再点击 APP 图标进行打开,你会发现 APP 直接走的是重建流程,而不是打开之前处于后台的 activity,并且只要不清理后台程序或者彻底关闭 APP,就会一直这样。
接着去看了别人家的 APP ,像微博、QQ 也有这种问题。找到的资料有说是属于 Android 系统机制问题,可以不做处理。
But... 真不幸,被 PM 发现了这个问题(太变 Tai 了),要解决,只好开始着手了。
其实解决方法很简单:
方法一:
将 APP 启动的第一个 activity 的启动模式改为 singleTop:
android:launchMode="singleTop"
方法二:
在 APP 启动的第一个 activity 中加入如下代码:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// 解决APK安装后点打开按钮,打开程序后按home键后再通过APP图标唤醒会重新调用oncreate的问题
if ((getIntent().getFlags() & Intent.FLAG_ACTIVITY_BROUGHT_TO_FRONT) != 0) {
finish();
return;
}
setContentView(R.layout.activity_main);
}
PS:注意得在 setContentView 之前。
当然到这里还没完,上面的解决方法只有当 APP 启动的第一个 activity 的启动模式不为 singleTask 才有效,那么问题来了,如果项目需要启动的第一个 activity 的启动模式为 singleTask 那该怎么办呢?
其实这真的很无奈,但也有解决方法,那就是把 APP 启动的第一个 activity 改为空 activity(当然得加上上面两种解决方法之一的处理),然后马上跳转你原来第一个要启动的activity(该 activity 保留 singleTask 的启动模式)。
但当你原来第一个要启动的 activity 要处理一些其它的事情而必须把它放到第一个启动的话那就不适用了,那么就只能选择无视这个问题了。
(当然你也可以怂恿设计或 PM 给加个启动图页面,这样就可以直接通过上面的两个方法简单解决问题,当然这可能会带来其它的坑,比如启动图会变化、有动画....,所以,慎用,哈哈哈~)
首先先说清楚重现过程:
在安装新 APK 或者升级已安装 APP 后将会出现安装完成的页面,该页面其中会提供两个按钮,一个是“完成”,另一个是“打开”。其中如果选了“完成”,那什么事都不会发生,但如果选了“打开”,就会打开 APP ,这时候按 HOME 键回到桌面,再点击 APP 图标进行打开,你会发现 APP 直接走的是重建流程,而不是打开之前处于后台的 activity,并且只要不清理后台程序或者彻底关闭 APP,就会一直这样。
接着去看了别人家的 APP ,像微博、QQ 也有这种问题。找到的资料有说是属于 Android 系统机制问题,可以不做处理。
But... 真不幸,被 PM 发现了这个问题(太变 Tai 了),要解决,只好开始着手了。
其实解决方法很简单:
方法一:
将 APP 启动的第一个 activity 的启动模式改为 singleTop:
android:launchMode="singleTop"
方法二:
在 APP 启动的第一个 activity 中加入如下代码:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// 解决APK安装后点打开按钮,打开程序后按home键后再通过APP图标唤醒会重新调用oncreate的问题
if ((getIntent().getFlags() & Intent.FLAG_ACTIVITY_BROUGHT_TO_FRONT) != 0) {
finish();
return;
}
setContentView(R.layout.activity_main);
}
PS:注意得在 setContentView 之前。
当然到这里还没完,上面的解决方法只有当 APP 启动的第一个 activity 的启动模式不为 singleTask 才有效,那么问题来了,如果项目需要启动的第一个 activity 的启动模式为 singleTask 那该怎么办呢?
其实这真的很无奈,但也有解决方法,那就是把 APP 启动的第一个 activity 改为空 activity(当然得加上上面两种解决方法之一的处理),然后马上跳转你原来第一个要启动的activity(该 activity 保留 singleTask 的启动模式)。
但当你原来第一个要启动的 activity 要处理一些其它的事情而必须把它放到第一个启动的话那就不适用了,那么就只能选择无视这个问题了。
(当然你也可以怂恿设计或 PM 给加个启动图页面,这样就可以直接通过上面的两个方法简单解决问题,当然这可能会带来其它的坑,比如启动图会变化、有动画....,所以,慎用,哈哈哈~)
相关文章推荐
- 关于Android app首次安装完成后在安装界面直接“打开”应用再按home键返回桌面,重新进入app重复实例化launcher activity的问题的解决
- android 按home键回到桌面,然后再次进入app,app重新打开问题
- 关于Android app首次安装完成后在安装界面直接“打开”应用再按home键返回桌面,重新进入app重复实例化launcher activity的问题的解决
- 关于Android app首次安装完成后在安装界面直接“打开”应用再按home键返回桌面,重新进入app重复实例化launcher activity的问题的解决
- Android应用安装后打开,按Home键切出应用后再点击桌面图标返回导致应用重启问题及再次把app唤醒到前台
- Android App首次安装完成后在安装界面直接打开应用,再按home键返回桌面,从桌面图标重新进入app,返回不到之前的界面问题
- 关于Android app首次安装完成后在安装界面直接“打开”应用再按home键返回桌面,重新进入app重复实例化launcher activity的问题的解决
- 关于Android app首次安装完成后在安装界面直接“打开”应用再按home键返回桌面,重新进入app重复实例化launcher activity的问题的解决
- Android应用第一次安装成功点击“打开”后Home键切出应用后再点击桌面图标返回导致应用重启问题的解决方法
- 关于Android app首次安装完成后在安装界面直接“打开”应用再按home键返回桌面,重新进入app重复实例化launcher activity的问题的解决
- 关于Android app首次安装完成后在安装界面直接“打开”应用再按home键返回桌面,重新进入app重复实例化launcher activity的问题的解决
- [置顶] android,解决手动创建的桌面快捷方式无法跳转到制定的activity的问题,提示未安装应用程序
- 安装APP成功后点击打开,按home键回到桌面,再打开图标进入程序重新启动
- Android应用第一次安装成功点击“打开”后Home键切出应用后再点击桌面图标返回导致应用重启问题
- Android之部分手机(oppo r9s)安装app出现崩溃问题解决办法
- Android开发之APP安装后在桌面上不显示应用图标的解决方法
- Android 安装release版apk出现多个实例的问题解决方法
- 关于Android App上线后从应用市场点击打开按钮进入应用后进行操作后,再点击home键到桌面后点击启动图标重新打开应用的解决方法
- Android应用第一次安装成功点击“打开”后Home键切出应用后再点击桌面图标返回导致应用重启问题
- android-安装应用直接“打开”,home键返回桌面再次点击应用图标,重新启动MAIN_action的Activity