• Android结束Activity退出程序的一种有效方法


    关于完全退出Android程序,网上这方面的帖子很多,方法也很多。记得当时自己写的第一个比较完整的项目的时候就遇上了这个问题,由于对Activity的生命周期了解不够,又使用了TabActivity使得层次关系比较复杂,在程序中添加的“退出”菜单项经常无法完全退出,之后网上各种搜索,各种方法也试过了,什么System.exit(0)啊,结束进程之类的啊,都依然无效果。
    后面才发现的这个方法。思路也很简单,回想自己当初为了解决这个问题时的苦苦寻觅,遂决定将其共享,供遇到此问题人士作为参考。

    啰嗦够了,上思路:添加一个全局变量作为程序退出的标记(boolean类型),当需要退出程序时置为true,程序中每个Activity的onStart方法中对该变量进行判断,为true就结束自己。
    看代码吧:
    使用Application来保存一个全局变量isProgramExit。(对Application使用不熟悉的话查看相关资料)
    public class MyApplication extends Application {

    // 程序退出标记

    private static boolean isProgramExit = false;

    public void setExit(boolean exit) {

    isProgramExit = exit;

    }

    public boolean isExit() {

    return isProgramExit;

    }

    }

    在你退出时需要结束的每个Activity的 onStart方法加上以下代码:
    protected void onStart() {

    super.onStart();

    MyApplication mApp = (MyApplication)getApplication();

    if (mApp.isExit()) {

    finish();

    }

    }

    比如,程序中有三个Activity,A —— B —— C;现在在C中有个按钮,点击退出整个程序。按照上面说的,在A和B的onStart方法中加入判断代码(C中可以不加),C中点击按钮时执行:
    MyApplication mApp = (MyApplication)getApplication();

    mApp.setExit(true);

    finish();

    这样C结束了自己,按照流程会回到B,然后B中会进行判断,因为退出条件满足,结束自己;再回到A,同样也结束……

    可以看到,这种方法并不高明,甚至有些复杂,因为要在每个Activity的onStart中都加上判断。但不可否认的是这种方法却是绝对有效的,不管你的程序中Activity如何跳转来跳转去,只要一声令下,通通结束,屡试不爽。
    所以,有遇到程序退出问题的朋友可以作为参考。

  • 相关阅读:
    JMeter设置中文界面显示
    Linux搭建JAVA环境
    SQLyog连接MySQL时出现错误代号:2058
    SQL基础教程(第2版)笔记整理
    sqlserver查询数据的所有表名和行数
    【ASP.NET 问题】IIS发布网站后出现 "处理程序“PageHandlerFactory-Integrated”在其模块列表中有一个错误"的解决办法
    Asp.net在IE10、IE11下事件丢失经验总结
    SQL 2008 R2下载 升级R2 SP1或者SQL 2008从10.50.1600升级10.5.2500
    IE9浏览器中的My97日历控件刷新后无法打开问题解决办法
    windows2008 c盘清理
  • 原文地址:https://www.cnblogs.com/top5/p/2879466.html
Copyright © 2020-2023  润新知