如何在程序中随时的退出程序

原创 2016年05月31日 11:20:06

在BaseActivity的onCreate()方法中调用了ActivityCollector的addActivity()方法,表明将当前正在创建的活动添加到活动管理器中,然后在BaseActivity中重写onDestory()方法,并调用了ActivityCollector的removeActivity()方法,表明将一个马上要销毁的活动从Activity从活动管理器中移除。

其实思路很简单,只需要用一个专门的集合类对所有的活动进行管理就行了

新建一个ActivityCollector类作为活动管理器:

   public class ActivityCollector {
    public static List<Activity> activities = new ArrayList<>();

    public static void addActivity(Activity activity) {
        activities.add(activity);
    }

    public static void removeActivity(Activity activity) {
        activities.remove(activity);
    }

    public static void finishAll() {
        for (Activity activity : activities) {
            if (!activity.isFinishing()) {
                activity.finish();
            }
        }
    }
} 

在BaseActivity的onCreate()方法中调用了ActivityCollector的addActivity()方法,表明将当前正在创建的活动添加到活动管理器中,然后在BaseActivity中重写onDestory()方法,并调用了ActivityCollector的removeActivity()方法,表明将一个马上要销毁的活动从Activity从活动管理器中移除。

     public class BaseActivity extends Activity{
     @Override
     protected void onCreate (Bundle saveInstanceState){
     super.onCreate(savedInstanceState);
     Log.d("BaseActivity",getClass().getSimpleName());
     ActivityCollector.removeActivity(this);
     }
    }

以后,不管你想从跟么地方退出程序,只需要调用ActivityCollector.finishAll()方法就可以了,例如在ThirdActivity界面想通过点击按钮直接退出程序,只需要将代码改成如下所示:

public class ThirdActivity extends BaseActivity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        Log.d("ThirdActivity","Task id is "+getTaskId());
        requestWindowFeature(Window.FEATURE_NO_TITLE);
        setContentView(R.layout.third_layout);
        Button button3 =(Button) findViewById(R.id.button_3);
        button3.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                ActivityCollector.finishAll();
            }
        });
    }
}

当然你还可以在销毁所有活动的代码后面在家上杀掉当前进程的代码,以保证程序的完全退出。

版权声明:本文为博主原创文章,未经博主允许不得转载。

机器学习项目实战之用户流失预警

from __future__ import division import pandas as pd import numpy as npchurn_df = pd.read_csv("D:\\te...

宜信技术研发中心实习生面经

宜信技术研发中心实习生面经

Windows应用程序的退出

Windows应用程序的退出 flyfish  OnOK OnCancel EndDialog的关系 VC\atlmfc\src\mfc\dlgcore.cpp文件中 void CDial...

Mac小技巧:强制退出程序的六种方法

原帖地址: http://www.cnbeta.com/articles/175447.htm1、使用键盘快捷键强制退出处于活跃状态的Mac程序 快捷键:Command+Option+Shift+...
  • mydo
  • mydo
  • 2016年09月22日 20:00
  • 2416

Android之安全退出应用程序的几种方式

当我们做项目的时候,当用户在几秒的时间之内按回车键的时候,需要退出程序,但是退出我们要确保安全退出,防止还有程序还在后台运行,下面介绍几种安全的退出程的几种方式(综合了其它博客的然后加上自己使用的看到...

Android彻底退出应用程序

android虚拟机applicationnotificationsstringbehavior http://www.eoeandroid.com/home.php?mod=space&uid...

MFC中通过子窗口关闭父窗口以实现退出程序

这应该是个老问题,我来稍微总结下:(我刚刚接触Windows编程希望大家多多指点) 1.上来来个最鲁莽的. 直接通过exit(0),ExitProcess(0); //不好的用法 猜测...

Android 双击返回键退出程序的3种写法~

LZ-Says:给大家推荐一个网站,有兴趣可以查阅,想为大家贡献一点自己的力量也可以投稿,老大审核通过会发表,更好的帮助有需要的人~欢迎大家踊跃投稿~地址如下: http://www.1...

android中使用对话框和Toast退出应用程序

在使用App和学习android应用程序开发的过程中,应用退出最常使用的是对话框退出和Toast二次提示退出App。很对NB的应用都用第二种方式退出App. 1.使用对话框退出应用程序: //对话框退...

Node.js进程守护,防止程序崩溃自动退出

最近用node在写一个TCP Socket服务器,但是客户端异常断开后,服务器会报错[Error: read ECONNRESET]错误,然后挂掉,上网查了相关文章,没有好的方法,最好的就是对服务器程...
  • wudiazu
  • wudiazu
  • 2017年01月08日 18:45
  • 2315
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:如何在程序中随时的退出程序
举报原因:
原因补充:

(最多只允许输入30个字)