当前位置: 网学 > 编程文档 > Android > 正文

android完美退出程序

来源:Http://myeducs.cn 联系QQ:点击这里给我发消息 作者: myeducs.cn 发布时间: 13/03/17

【网学网提醒】:网学会员为需要朋友们搜集整理了android完美退出程序相关资料,希望对各位网友有所帮助!


    还有一种比较流行的Android经典完美退出方法,使用单例模式创建一个Activity管理对象,该对象中有一个Activity容器(具体实现自己处理,使用LinkedList等)专门负责存储新开启的每一个Activity,并且容易理解、易于操作,非常不错!
    MyApplication类(储存每一个Activity,并实现关闭所有Activity的操作)
    publicclassMyApplicationextendsApplication{
    privateListactivityList=newLinkedList();
    privatestaticMyApplicationinstance;
    privateMyApplication()
    {
    }
    //单例模式中获取唯一的MyApplication实例
    publicstaticMyApplicationgetInstance()
    {
    if(null==instance)
    {
    instance=newMyApplication();
    }
    returninstance;
    }
    //添加Activity到容器中
    publicvoidaddActivity(Activityactivity)
    {
    activityList.add(activity);
    }
    //遍历所有Activity并finish
    publicvoidexit()
    {
    for(Activityactivity:activityList)
    {
    activity.finish();
    }
    System.exit(0);
    }
    }
    在每一个Activity中的onCreate方法里添加该Activity到MyApplication对象实例容器中
    MyApplication.getInstance().addActivity(this);
    在需要结束所有Activity的时候调用exit方法
    MyApplication.getInstance().exit();
    我对其他一些退出方法进行的一点介绍和点评(不到之处还请指正):
    @restartPackage(getPackageName())(具体就不介绍了)
    我在SDK2.1版本下开发的一款小软件,放到Android2.2或2.3操作系统上无法退出,因为restartPackage方法在SDK2.1以后版本已经被废弃不用了,理由是因为它不安全,可能关闭同其他应用程序共享的Service,而这个Service别人还要用呢,你给别人关了就不对了。
    @有人说的终极退出方法:
    IntentstartMain=newIntent(Intent.ACTION_MAIN);
    startMain.addCategory(Intent.CATEGORY_HOME);
    startMain.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    startActivity(startMain);
    System.exit(0);
    实际上这种方法只是返回了Home页面,如果你再次进入应用,你会发现进入的首界面是你先前没有关闭的Activity。
    @调用系统隐藏forceStopPackage方法,这里是通过映射调用(也有其他方法)
    Methodmethod=null;
    ActivityManagermanager=(ActivityManager)getSystemService(ACTIVITY_SERVICE);
    try{
    method=Class.forName("android.app.ActivityManager").getMethod("forceStopPackage",S
    tring.class);
    method.invoke(manager,getPackageName());
    }catch(Exceptione){
    Log.d("force",e.getMessage());
    }
    我在SDK2.2和2.3的测试结果是,出现NULLPointerException,弹出错误窗口,程序被迫关闭,和预想的正常退出有差别。不过我们可以通过修改基类实现自己的Thread.UncaughtExceptionHandler接口的uncaughtException方法,这样就不会有错误窗口弹出。程序完全退出。
    @和上面一样,不过这是故意制造异常退出(上边是无意制造的异常),但我认为这毕竟是下策。
    
  • 上一篇资讯: android实用资料
  • 下一篇资讯: Android安装流程
  • 网学推荐

    免费论文

    原创论文

    浏览:
    设为首页 | 加入收藏 | 论文首页 | 论文专题 | 设计下载 | 网学软件 | 论文模板 | 论文资源 | 程序设计 | 关于网学 | 站内搜索 | 网学留言 | 友情链接 | 资料中心
    版权所有 QQ:3710167 邮箱:3710167@qq.com 网学网 [Myeducs.cn] 您电脑的分辨率是 像素
    Copyright 2008-2015 myeducs.Cn www.myeducs.Cn All Rights Reserved
    湘ICP备09003080号