原文链接:http://zoulu1.blog.163.com/blog/static/467331492012127111641330/
感谢作者!
此方法借鉴与网上,因为做项目时遇到有多个acitivity需要退出的功能,试遍了网上的方法,最终发现这种方法有用,特分享给大家,其他的不成功的方法不一一介绍,不是说那些方法没用,而是在有多个Activity的特定环境下无效,在单个Activity中其他方法也能测试通过。
该方法的原理:
用一个list记录每次启动的acitivity,在退出时候循环退出改list中保存的acitivity,这样就做到了所有的acitivity完美退出。
第一步:新建一个AgentApp.java,代码如下
package com.zhaoba.service; //代码所在包的位置的名字
import java.util.ArrayList;
import java.util.List;
import android.app.Activity;
import android.app.Application;
public class AgentApp extends Application {
private List<Activity> activities = new ArrayList<Activity>();
private static AgentApp instance;
private AgentApp(){
}
//单例模式中获取唯一的application
public static AgentApp getInstance(){
if(null==instance){
instance=new AgentApp();
}
return instance;
}
//存放Activity到list中
public void addActivity(Activity activity) {
activities.add(activity);
}
@Override
//遍历存放在list中的Activity并退出
public void onTerminate() {
super.onTerminate();
for (Activity activity : activities) {
activity.finish();
}
android.os.Process.killProcess(android.os.Process.myPid()) ;
}
}
第二步:在你的每个Activity的onCreate()方法中加入以下代码
AgentApp.getInstance().addActivity(this);
目的是:通过调用addActivity()方法,将启动的Activity名字添加到列表list中!
第三步:在你需要退出的时候,比如检测到按键按下等地方加入以下退出代码即可!
AgentApp.getInstance().onTerminate();
通过以上三步,就可以实现在要关闭的地方,实现完美关闭!