刚刚学习到的Android有效的完全退出App的方法,记录一下

最近在写一个包含两个Activity和一个Service的App,这个App须要实现完全退出的功能,也就是关闭全部Activity而且结束Service。html

结束Service的方法比较明确,使用stopService就能够了,关键是想要结束全部Activity就须要费点劲了,一开始我尝试用java

.getSystemService(ACTIVITY_SERVICE).killBackgroundProcesses(getPackageName());

这样的方法来结束掉全部Activity,可是试了一下,没有效果。而后Google了一下,看到了这篇文章,文章中的方法仍是比较简单管用的,而后我又按照本身的须要对这个文章中提供的方法作了一些修改,如今基本上实现了个人App的需求。android

这个方法其实很简单,就是在一个单例中维护一个Activity的list,在每一个Activity的onCreate中调用这个单例的addActivity(),把当前Activity放到list中,而后想要完全退出App(也就是finsh全部的Activity),只要调用单例中的finshAllActivities()(finshAllActivities()会遍历这个list,调用list中每一元素的finsh)就能够了。app

package since1986.opensmspostman;

import java.util.Arrays;
import java.util.LinkedList;

import android.app.Activity;

public class ActivityManager {

	private LinkedList<Activity> activityLinkedList = new LinkedList<Activity>();
	
	private ActivityManager() {
	}
	
	private static ActivityManager instance;
	
	public static ActivityManager getInstance(){
		if(null == instance){
			instance = new ActivityManager();
		}
		return instance;
	}
	
	//向list中添加Activity
	public ActivityManager addActivity(Activity activity){
		activityLinkedList.add(activity);
		return instance;
	}
	
	//结束特定的Activity(s)
	public ActivityManager finshActivities(Class<? extends Activity>... activityClasses){
		for (Activity activity : activityLinkedList) {
			if( Arrays.asList(activityClasses).contains( activity.getClass() ) ){
				activity.finish();
			}
		}
		return instance;
	}
	
	//结束全部的Activities
	public ActivityManager finshAllActivities() {
		for (Activity activity : activityLinkedList) {
			activity.finish();
		}
		return instance;
	}
}
相关文章
相关标签/搜索