Android安全退出多Activity与中止应用程序进程的探索
2011-06-14 19:00
302 查看
本文仅针对Android模拟器来进行探索(买不起真机)。
看书时偶尔看到startActivity与startActivityForResult方法比较,想起一个面试题:如何安全退出多个Activity?
网络上很多文章都有那几种解决方案。如:1、把所有打开的Activity记录下来,然后在项目结束时统一进行finish();2、采用startActivityForResult方法,在启动另一个Activity时,针对原Activity递归调用finish();3、发送广播,所有的Activity收到广播后进行finiah()。
以上三种解决方案,都是可以给用户造成已经退出全部应用程序的假象的,为什么说是假象呢?因为该应用程序的进程并没有被杀死(切换到DDMS界面,可以看到进程还在)。同样,这样的话,会不会造成内存泄漏呢?我也不知道。
下面是我在模拟器中杀死应用程序进程的测试:
首先我创建两个Activity分别为MainActivity,CustomActivity,两个Activity的view界面中各包含一个按钮。我想要做的事是点击MainActivity中的按钮跳转到CustomActivity,点击CustomActivity中的按钮完全退出应用程序并杀死进程。
第二步,我在MainActivity按钮的onClick事件中,使用startActivityForResult启动CustomActivity,并复写onActivityResult函数,在onActivityResult函数未进行任何操作。在CustomActivity中的按钮onClick事件使用System.exit(0)。结果运行后很悲剧的事情发生了。。应用程序在不断的销毁、创建,进程也在不停的被kill、create。随后进行了多种方式的实验,读者可根据排列组合自己去实验。最后,我在MainActivity的onActivityResult函数中,写上finish(),其它不变,运行后在CustomActivity中点击按钮,退出全部应用程序并杀死应用程序进程。
具体为什么这么做能达到目的我也不是很清楚,但是,我想,这种退出全部应用程序并杀死进程的方法会不会不好呢?假如有100个Activity,每一个在启动另一个的之后都把自己finish掉,那么再按返回键时,又要重新去oncreate,这会不会是一个昂贵的开销呢?
有些搞不懂了,暂且放下,发篇文章。希望有看过源码或理解的朋友来解答我的疑问!
看书时偶尔看到startActivity与startActivityForResult方法比较,想起一个面试题:如何安全退出多个Activity?
网络上很多文章都有那几种解决方案。如:1、把所有打开的Activity记录下来,然后在项目结束时统一进行finish();2、采用startActivityForResult方法,在启动另一个Activity时,针对原Activity递归调用finish();3、发送广播,所有的Activity收到广播后进行finiah()。
以上三种解决方案,都是可以给用户造成已经退出全部应用程序的假象的,为什么说是假象呢?因为该应用程序的进程并没有被杀死(切换到DDMS界面,可以看到进程还在)。同样,这样的话,会不会造成内存泄漏呢?我也不知道。
下面是我在模拟器中杀死应用程序进程的测试:
首先我创建两个Activity分别为MainActivity,CustomActivity,两个Activity的view界面中各包含一个按钮。我想要做的事是点击MainActivity中的按钮跳转到CustomActivity,点击CustomActivity中的按钮完全退出应用程序并杀死进程。
第二步,我在MainActivity按钮的onClick事件中,使用startActivityForResult启动CustomActivity,并复写onActivityResult函数,在onActivityResult函数未进行任何操作。在CustomActivity中的按钮onClick事件使用System.exit(0)。结果运行后很悲剧的事情发生了。。应用程序在不断的销毁、创建,进程也在不停的被kill、create。随后进行了多种方式的实验,读者可根据排列组合自己去实验。最后,我在MainActivity的onActivityResult函数中,写上finish(),其它不变,运行后在CustomActivity中点击按钮,退出全部应用程序并杀死应用程序进程。
具体为什么这么做能达到目的我也不是很清楚,但是,我想,这种退出全部应用程序并杀死进程的方法会不会不好呢?假如有100个Activity,每一个在启动另一个的之后都把自己finish掉,那么再按返回键时,又要重新去oncreate,这会不会是一个昂贵的开销呢?
有些搞不懂了,暂且放下,发篇文章。希望有看过源码或理解的朋友来解答我的疑问!
相关文章推荐
- [Activity生命周期] Android 完美退出应用程序
- android78--如何退出Activity?如何安全退出已调用多个Activity的Application?
- 我的Android进阶之旅------>Android安全退出应用程序的几种方式
- Android应用程序在新的进程中启动新的Activity的方法和过程分析
- android 安全退出应用程序的几种方法
- Android如何安全退出应用程序
- Android如何安全退出多个Activity
- Android面试(一)?(内存泄露,Activity生命周期,横竖屏切换,Activity设为窗口,安全退出Activity,)
- Android-退出应用程序的所有activity
- Android:销毁所有的Activity退出应用程序几种方式
- Android应用程序在新的进程中启动新的Activity的方法和过程分析
- Android应用程序在新的进程中启动新的Activity的方法和过程分析
- Android 安全退出应用程序的方法总结
- Android学习札记40:关于安全退出已创建多个Activity的应用(3)
- Android 安全退出应用程序
- android安全退出所有activity
- Android:销毁所有的Activity退出应用程序几种方式
- Android应用程序在新的进程中启动新的Activity的方法和过程分析
- android 安全退出应用程序的几种方法
- Android完全退出应用程序,Activity自定义管理栈