Android 关闭多个Activity总结
来源:互联网 发布:标准差计算软件 编辑:程序博客网 时间:2024/06/05 05:53
在项目中,有时候遇到一种情况,同时关闭多个activity,它们有的是单一的层次调用关系,但也有的是多个activity调用同一个activity。比如有两个Activity,A和B,在业务上A和B都会跳转到C,C又跳转到了D,这样子A和B->C->D的层次关系,现在如果要关闭D的同时关闭C并刷新A和B,如果是其它的平台可能会在D里面的到D的调用者C,而android系统本身机制目前不具有这样的功能,也不需要,因为在Activity之间可以传递参数,对于上面的情况不同的开发人员可能会采取不同的方式:
一,采用startActivityForResult的方式打开D,这样子在D处理结束后会返回到C,在C的OnActivityResult里面可以关闭当前页面;(这里要注意一点,在关闭D页面调用finish()方法之前执行setResult方法,如果放在finish后执行则setResult不会执行,返回到C页面的也只是resultCode是默认值0)
二,将上一级Activity的instance带到D页面,或者让上一级Activity的对象让下一级页面可以获取到,比如在上一级页面里面讲instance定义为一个static的对象,这样每次create这对象就会将instance赋值为当前的对象,然后D页面就可以获取,并作出处理。但个人认为这个不是理想的做法,对象管理太乱。
三,使用Intent.FLAG_ACTIVITY_CLEAR_TOP,在关闭的页面中跳转到要跳转的页面,并设置intent的flag值为FLAG_ACTIVITY_CLEAR_TOP,这样在要跳转的页面对象栈以上的Activity都会被pop出去。如果在D页面关闭所有页面包括mainactivity即退出程序,可以在栈底的页面中override OnNewIntent方法,
在该方法里重写
if ((Intent.FLAG_ACTIVITY_CLEAR_TOP & intent.getFlags()) != 0) {
finish();
}
并将该Activity的启动模式设置为SingTop模式,保证这个Activity是永远处于栈底的。这里还要注意OnNewIntent方法的执行条件,可以自己百度一下。
四,通过广播机制,这个有点过于复杂
五,自己定义Activity Stack来管理真个应用的Activity的生命周期。
- Android 关闭多个Activity总结
- Android总结(1)---如何关闭多个Activity
- Android 关闭多个Activity
- Android关闭多个activity
- android 多个activity关闭问题
- Android开发之关闭多个Activity
- android程序退出关闭多个activity
- Android中同时关闭多个Activity
- Android中一个Activity关闭另一个Activity或者在一个Activity中关闭多个Activity
- 关闭多个activity
- android 退出时 同时关闭多个activity
- 利用Android广播机制关闭多个activity
- Android 关闭多个activity Intent.FLAG_ACTIVITY_CLEAR_TOP用法
- (转)Android开发之关闭多个Activity
- 一次关闭多个Activity
- 一次关闭多个Activity
- 一次关闭多个Activity
- Android中 在开启的多个Activity中关闭特定的Activity的方法
- 历史上出现过的主流C/C++ 编译器都有哪些?
- OneAlert 入门(三)——事件分析
- 静态成员函数和普通成员函数的区别
- android edittext 限制输入框小数位数
- is-A和has-A的区别
- Android 关闭多个Activity总结
- 【Baltic2014】【BZOJ3916】friends
- C++实现类、类的成员函数、主函数分离
- Realm Swift Objective-C 学习教程
- 使用api工具时get请求和post请求的不同
- 人脸情感识别相关的资料
- 性能检查
- Activity 重载方法 onStart和onResume、onPause和onStop的区别
- OpenCv 人脸检测的学习