当跳转到一个activity后按home键返回桌面,再桌面点击app图标进入后app重启了
2015-10-27 16:40
555 查看
在开发中发现个问题,不知道是我代码又问题,还是android本身有bug
描述如下:
1.安装界面安装完一个应用后,直接打开app,然后进入了 Activity_1, 此时再通过此activity用startActivity(intent)的方法打开Activity_2.
2. 然后按home键返回桌面,在桌面点击app图标进入,你觉得应该进入的是 Activity_2
,实际上却是Activity_1 .(app重启了)
3. 然而还没完,这时候你按 back 返回键,会发现返回到了之前打开的 Activity_2,再按返回,又出现Activity_1. 也就是说系统重复实例化了Activity_1.
4. 退出app后再次点击桌面图标进入,反复试验,没有再出现这个问题。也就是说,这个问题(bug ?)只出现在操作步骤(1)后才会产生.
解决方案:
在根activity 的super.onCreate(...)方法之后插入代码
if(!this.isTaskRoot()) {
//如果你就放在launcher Activity中话,这里可以直接return了
Intent mainIntent = getIntent();
String action = mainIntent.getAction();
if(mainIntent.hasCategory(Intent.CATEGORY_LAUNCHER) && action.equals(Intent.ACTION_MAIN)) {
//finish()之后该活动会继续执行后面的代码,你可以logCat验证,加return避免可能的exception
finish();
return;
}
}
描述如下:
1.安装界面安装完一个应用后,直接打开app,然后进入了 Activity_1, 此时再通过此activity用startActivity(intent)的方法打开Activity_2.
2. 然后按home键返回桌面,在桌面点击app图标进入,你觉得应该进入的是 Activity_2
,实际上却是Activity_1 .(app重启了)
3. 然而还没完,这时候你按 back 返回键,会发现返回到了之前打开的 Activity_2,再按返回,又出现Activity_1. 也就是说系统重复实例化了Activity_1.
4. 退出app后再次点击桌面图标进入,反复试验,没有再出现这个问题。也就是说,这个问题(bug ?)只出现在操作步骤(1)后才会产生.
解决方案:
在根activity 的super.onCreate(...)方法之后插入代码
if(!this.isTaskRoot()) {
//如果你就放在launcher Activity中话,这里可以直接return了
Intent mainIntent = getIntent();
String action = mainIntent.getAction();
if(mainIntent.hasCategory(Intent.CATEGORY_LAUNCHER) && action.equals(Intent.ACTION_MAIN)) {
//finish()之后该活动会继续执行后面的代码,你可以logCat验证,加return避免可能的exception
finish();
return;
}
}
相关文章推荐
- AndroidDevTools简介
- SwiftSocket 接收服务端byte[] 本地转换
- Unity3D 多种播放音效的方式
- Android HandlerThread 完全解析
- CGContextSaveGState与CGContextRestoreGState的作用 (转)
- Nagios监控Windows服务器
- 微信回复文本消息和图文消息
- [Android Pro] Android 4.3 NotificationListenerService使用详解
- SDKInitializer.initialize(getApplicationContext());为何报错!
- Android 获取有TabActivity继承关系的子类名的方法 及 获取Activity类名的方法
- iOS图片的异步加载
- Ljava.lang.Object;@ba8a1dc
- library not found for IPods/xxxx库 解决办法
- Unity 音乐播放全局类
- 如何让android开机后自动运行自己的程序
- ListView或GridView 顶部间距
- Android图片旋转,缩放,位移,倾斜,对称完整示例(一)——imageView.setImageMatrix(matrix)和Matrix
- web app开发总结
- Android 使用CheckBox实现ListView自定义单选
- Android github开源项目学习之—仿知乎APP(一)