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

原创 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();
            }
        });
    }
}

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

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

相关文章推荐

Android完全退出应用程序

在一个项目中,要退出android程序,试了restartPackage、 killBackgroundProcesses 、通过异常并在Application的子类中重新注册Thread的 Thre...

关于SIGPIPE导致的程序退出

原文地址:http://linux.chinaunix.net/techdoc/net/2008/10/10/1037290.shtml ------------------------------...

Android长时间及连续两次按BackUp按键退出程序

今天自己学习了Android按BackUp按键退出程序的小Demo,发现网上有好多实例,但感觉他们的能解决问题,但可能会存在内存泄漏的问题,今天就自己总结了一下!分析问题: 1>重写Activity...

使用 Visual Studio .NET 客户端执行自动化功能后不退出 Office 应用程序

http://support.microsoft.com/?scid=kb;zh-cn;317109&spid=1108&sid=152 症状 使用 Microsoft Visual Ba...
  • plean
  • plean
  • 2011-08-24 13:45
  • 353

让程序在崩溃时体面的退出之SEH+Dump文件

在我上篇文章《让程序在崩溃时体面的退出之SEH》中讲解了SEH中try/except可以捕捉异常,避免程序的崩溃,并且可以在处理完异常之后,还能决定进该进程如何执行。对于应用程序的使用者来说,并不知道...

C#强制退出WinForm程序之Application.Exit和Environment.Eixt

这几天在做一个把大量Infopath生成的XML数据,进行处理的程序,我用了MDI子窗体,每个窗体包含了各自的功能,如,遍历目录及其子目录检查文件类型并自动生成Sql语句并入库、对Infopath数据...

【转】Android 程序退出的办法

在Android中退出程序比较麻烦,尤其是在多个Activity的程序中,在2.2之前可以采用如下代码退出程序: ActivityManager am = (ActivityManage...

关于c语言编写 单项链表 的创建、插入、修改、删除、显示、退出 的程序案例

#include #include #define OK 1 #define ERROR -1 /*******************定义节点结构*****************/ type...

linux下利用core dump 对异常退出的程序调试

在Linux下,当执行程序异常退出时,系统会将内存中执行的代码copy一份到磁盘,然后将内存释放,其中生成的文件名是core或core.pid,默认生成路径是执行程序所在的目录。   具体使用步骤:...

Android程序完全退出的三种方法

Android程序完全退出的三种方法 很多网友可能发现自己的Android程序有很多Activity,比如说主窗口A,调用了子窗口B,在B中如何关闭整个Android应用程序呢? 这里Android...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

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