优雅的App完全退出方案(没有任何内存泄漏隐患)
2016-01-19 17:08
316 查看
原著地址:http://blog.csdn.net/u010687392/article/details/46879081
在Android开发过程中,特别是界面比较多的情况下,用平常的退出方式往往是不能完全退出这个应用,网络上也好多各种退出方案。其中一种应该是被广大开发者采纳使用,也非常的清晰方便,就是在Application中维护一个单例的List<Activity>管理容器,每次打开新的Activity就把当前Activity加入到容器中,然后在需要完全退出的时,就循环遍历该容器分别finish()每个Activity,即达到完全退出功能。
虽然这种退出方式很好,但却存在内存泄漏的隐患,所以,我们还需要再找更优的方案。这里给出一个非常好的、实现超级简单的方法,不需要通过什么管理Activity,而是通过在Activity的启动模式上做文章。
举个例子!
比如:有一个应用一打开首先进入A界面(引导界面)、再进入B界面(主界面)、然后进入C界面、进入D界面、进入E界面、进入F界面、再返回到B界面(主界面)、然后进入G界面、进入H界面,最后再返回到B界面(主界面),即流程为A->B->C->D->E->F->B->G->H->B。如果Activity是按默认的启动模式,则在主界面B上点退出按钮要退出整个app的话,则需要依次关闭B-H-G-B-F-E-D-C-B-A界面,然并卵......这谁也不愿意这样关闭啊。但是我们如果设置B界面(主界面):android:launchMode="singleTask",那么启动过程从A->B->C->D->E->F->B到B界面上时,这时候不会重新创建一个B界面,而是自动finish掉C、D、E、F界面后再使用原来那个B界面。然后再从B->G->H->B,也是会自动finish掉G、H界面而使用之前的B界面。所以,退出整个app应用也就只需退出界面A和界面B了,而A界面是引导界面,当从A进入B的时候就可以先finish掉A,然而,现在只需要在主界面B上finish自己就可以了。
轻轻松松完成整个App应用的退出!
在Android开发过程中,特别是界面比较多的情况下,用平常的退出方式往往是不能完全退出这个应用,网络上也好多各种退出方案。其中一种应该是被广大开发者采纳使用,也非常的清晰方便,就是在Application中维护一个单例的List<Activity>管理容器,每次打开新的Activity就把当前Activity加入到容器中,然后在需要完全退出的时,就循环遍历该容器分别finish()每个Activity,即达到完全退出功能。
虽然这种退出方式很好,但却存在内存泄漏的隐患,所以,我们还需要再找更优的方案。这里给出一个非常好的、实现超级简单的方法,不需要通过什么管理Activity,而是通过在Activity的启动模式上做文章。
举个例子!
比如:有一个应用一打开首先进入A界面(引导界面)、再进入B界面(主界面)、然后进入C界面、进入D界面、进入E界面、进入F界面、再返回到B界面(主界面)、然后进入G界面、进入H界面,最后再返回到B界面(主界面),即流程为A->B->C->D->E->F->B->G->H->B。如果Activity是按默认的启动模式,则在主界面B上点退出按钮要退出整个app的话,则需要依次关闭B-H-G-B-F-E-D-C-B-A界面,然并卵......这谁也不愿意这样关闭啊。但是我们如果设置B界面(主界面):android:launchMode="singleTask",那么启动过程从A->B->C->D->E->F->B到B界面上时,这时候不会重新创建一个B界面,而是自动finish掉C、D、E、F界面后再使用原来那个B界面。然后再从B->G->H->B,也是会自动finish掉G、H界面而使用之前的B界面。所以,退出整个app应用也就只需退出界面A和界面B了,而A界面是引导界面,当从A进入B的时候就可以先finish掉A,然而,现在只需要在主界面B上finish自己就可以了。
轻轻松松完成整个App应用的退出!
相关文章推荐
- android自定义控件的最大高度MaxHeightView
- iOS学习——利用Timer更新通话时间与播放器进度条
- Objective-C的hook方案(一): Method Swizzling
- Android Studio SVN 操作
- Zabbix实现微信告警
- 【常用工具类】读取验证码并自动填充 EditText
- iOS textfield 限定输入的文本长度
- PHP实现微信网页授权开发教程
- Root WebApplicationContext: initialization completed in 1039648 ms
- [原创]Android应用 - YE启动器APP(YeLauncherApp)
- Android之支付宝设计与开发
- android 开发者的个人博客集
- Android学习之开源项目PullToRefresh的使用
- 【转载】iOS麦克风录制音频并保存成mp3文件的Demo
- Android---破解锁屏密码、获取wi-fi密码
- Unity炮弹拖尾和弓箭的抛物运动方法
- Android 蓝牙
- Android版本随记
- Android MVP模式
- Android运行环境Dalvik和ART的比较