子页面Activity缓存及销毁
来源:互联网 发布:怪物猎人ol软件 编辑:程序博客网 时间:2024/05/07 20:07
最近碰上个需求挺有意思的:
主菜单Activity是A,子页面Activity是B,要求,A点击进入B,B返回后不能结束,从A再次进入B要上次的状态,从A点返回,整个APP退出。
1、首先对B的返回进行处理:
@Overridepublic void onBackPressed() { // super.onBackPressed(); Qiuutil.LogE("onBackPressed"); Intent intent = new Intent(this, AActivity.class); startActivity(intent);}
必须重写此方法,并注释Supper。否则默认调用会FINISH(),就无法缓存。
但是这里又是重新打开A,所以A必须是单例模式,
2、A单例模式
android:name=".activity.AActivity"android:launchMode="singleInstance"然后又再进入B
Intent intent = new Intent(this, BActivity.class); startActivity(intent);这时要求进入的是已经缓存的B,所以B也得使用单例模式,
3、B单例模式
android:name=".activity.BActivity"android:launchMode="singleTask"
这里并没有使用“singleInstance”模式而使用“singleTask”。(华为手机测试)
到这里就完成了需求。
4、探讨B单例模式
如果B使用“singleInstance”模式,那么在A使用返回退出时,B界面会一直存活,无法退出整个APP。具体原因不懂,请有了解的朋友留言。
如果是小米手机B必须使用“singleInstance”模式;
如果是华为手机B必须使用“singleTask”模式;
好蛋疼,求高手指点。
5、为了更加保险,在B中为B设置单例模式如下:
private static BActivity instance;public staticBActivity getInstance() {return instance;}
@Overrideprotected void onCreate(Bundle savedInstanceState) {instance = this;}
然后在A中:
@Overridepublic void onBackPressed() { BActivity.getInstance().finish();
super.onBackPressed();}
0 0
- 子页面Activity缓存及销毁
- 销毁 Activity
- activity销毁指定activity
- Activity跳转到 TabActivity的子页面
- activity退出,销毁线程
- Activity销毁与重建
- 销毁全部Activity
- 手势滑动销毁Activity
- activity之销毁
- activity之销毁(二)
- 销毁一个Activity
- Activity 启动与销毁
- 销毁一个Activity
- activity销毁处理
- Android-销毁activity
- Android之Activity销毁
- 仿微信右滑销毁Activity
- 仿微信右滑销毁Activity
- Keil Error:C4065E
- 各个系统中的回车换行符
- CSS常见兼容性问题总结
- Java俩种比较器的介绍
- Video4Linux框架简介(4) - v4l2_ioctl_ops
- 子页面Activity缓存及销毁
- 游戏破解技术研究
- 01、flex布局介绍
- 窗边的小豆豆
- centos7yum安装mesos(1.0.0)+marathon+zookeeper+docker
- C++ 类与对象
- Javascript 链式操作以及流程控制
- SYs_BIOS swi中断
- java正则表达式 match 和 find