Activity次级页面和主页间来回跳转,防止重复创建Activity实例
来源:互联网 发布:表单验证 js 编辑:程序博客网 时间:2024/06/08 12:00
很多时候,在进入详情页或次级页面的时候,最后会返回到上一个Activity。在返回时,一般用Intent去启动。但是如果单纯地使用
Intent intent = new Intent(A.this, B.class) ;startActivity(intent) ;
你会发现,多次地从A进入B,又从B回到A,然后这两个Activity就会一直创建。打log发现两个Activity的onCreate方法一直调用,而栈里也一层一层地叠着这俩Activity的实例。当你按返回键准备返回时,发现并不能实现从次级页面返回到主页,然后退出应用这一流程,会把栈里所有创建的实例都出栈完了才会退出。
怎么实现无论点击多少次互相跳转,当页面在主页A的时候,点击返回时都会退出应用。即A Activity在栈中只有一个实例。
方法1:在Manifest里设置主页(A)的launchMode为singleTask,这样每次从次级页面返回时,会将主页A上面的Activity清空,让A重新回到栈顶。这样无论点击多少次AB跳转,都不会出现从主页返回到了次级页面。
方法2:在代码中由B启动A时,给Intent设置Flag。
Intent intent = new Intent(B.this, A.class) ;intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP) ;startActivity(intent) ;
FLAG_ACTIVITY_CLEAR_TOP也会清空目标Activity(A)和它上面的所有Activity,并且重新创建A,所以在B跳转A时,打Log会发现,
A onDestroy()A onCreate()B onDestroy()
问题是解决了,但是A重新创建了一次,A毕竟是主页,是很多次级Activity返回的终点,不想A重新创建,怎么办?
可以给主页A设置launchMode为singleTask,这样A就不会重新创建了(A -> B ->A -> B -> A -> B ->A):
A onCreate B onCreate B onDestroy B onCreate B onDestroy B onCreate B onDestroy
可以看到,无论AB之间互相跳转多少次,都不会重新创建A,只是身为次级页面的B会一直创建,当然,很多情况下,次级页面只会进入一次,比如新建××,修改××,这种次级页面会随着任务的完成而结束,销毁也是应该的。
- Activity次级页面和主页间来回跳转,防止重复创建Activity实例
- Android中Activity和Fragment页面跳转
- androidstudio activity页面跳转
- activity页面跳转问题
- Activity页面跳转
- activity和fragment实现主页面页面切换
- Activity跳转实例
- [Android实例] 同一Activity的实例被多次重复创建
- Android 避免Activity重复创建 一次finish()返回上个页面
- 同一Activity的实例被多次重复创建
- 同一Activity实例被多次重复创建的解决方法
- 同一Activity的实例被多次重复创建
- 防止Activity被重新创建
- Android Activity页面跳转动画
- Android Activity页面跳转实现
- activity和fragment跳转
- Activity添加Fragment防止重复添加
- Android开发笔记--Activity 页面跳转和传值
- 大数据分析界的“神兽”Apache Kylin有多牛?
- XML
- 不使用构造方法创建Java对象: objenesis的基本使用方法
- WebSocket学习总结
- CSS——语法
- Activity次级页面和主页间来回跳转,防止重复创建Activity实例
- Andoid 总线设计 (二)
- linux shadowsocks客户端配置
- hibernate
- HDU 1711 Number Sequence(kmp模板)
- ubuntu:unrar 的使用
- TimerMask类
- Spring JdbcTemplate问题 ,坑爹
- 【杭电2018】母牛的故事