首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 移动开发 > Android >

再议Android2.2运用完全退出

2012-07-01 
再议Android2.2应用完全退出在查找了很多资料和长期的实践之后。总结出了一套确实可行的Android2.2完全退出

再议Android2.2应用完全退出
在查找了很多资料和长期的实践之后。
总结出了一套确实可行的Android2.2完全退出应用的方法。
先说明一下,我需要达到的效果:

1,所有Activity被销毁。
2,Application被销毁。
3,退回手机桌面。
4,再次进入系统时,必须由统一的入口进入,完成程序必要的初始化操作。

开始正文,按顺序讲解需要实现代码

1,自定义Application,并在Manifest.xml中注册使用。

    /**     * 完全退出本应用程序     *      * @author ashtray     * @creaetime 2011-8-26 上午11:21:29     * @param app     */    public static void exit(CustomApplication app) {        /** 执行完全退出程序的操作 */        // 清除所有已创建的Activity        app.removeAll();        System.gc();        // 跳转至home界面        Intent home = new Intent(Intent.ACTION_MAIN);        home.addCategory(Intent.CATEGORY_HOME);        home.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);        app.getApplicationContext().startActivity(home);        // 销毁程序进程,并退出        Process.killProcess(Process.myPid());        System.exit(10);    }

说明已在注释中。
分三个步骤:
移除所有Activity、跳转至手机Home界面、杀死应用进程并退出,这样可以保证Application被销毁。
经测试,这三个步骤缺一不可。否则不能达到预期的需求。

lagunarock原创文章,欢迎转载,转载请注明原文作者及文章url。

1 楼 zeroblue 2011-08-27   其实就Android的内存管理机制来说,根本没完全退出应用的必要。 2 楼 zhoujianghai 2011-08-27   private List<Activity> activities; 
 
/** 初始化 */ 
if ( activities == null ) { 
   activities = new Vector<Activity>(); 

     
这里可以把引用类型定义成Vector,效率更高些吧。
楼上说的对,就Android的内存管理机制来说,没完全退出应用的必要,这个由android系统说了算。你退出应用后,你的应用对应的进程变成了后台进程,当系统内存不足时,会销毁低优先级的进程,此时自然就把后台进程给干掉了。当内存充足的情况下,应用对应的后台进程会一直存在,这样当你下次进入应用的时候速度更快。 3 楼 EarthAttack 2012-02-28   Mark,楼主好样的,解决了我的问题

热点排行