项目中有一个需求,当接收到语音的关闭应用广播时,需要关闭我们的应用。
即受到广播后遍历所有当前打开的Activity,将它们都杀掉。
解决思路就是每个Activity的oncreate方法中将该Activity加入一个栈,onDestroy方法中将该Activity移出栈,当最后受到关闭应用广播时遍历栈,将栈中的每一个Activity杀掉。
对于上面的操作,整理了一个Activity相关的工具类,以后可以直接COPY使用:
import android.app.Activity;
import java.util.LinkedList;
import java.util.Stack;
/**
* @date 2021/7/1
* Activity工具类,用于实现Activity相关的操作
*/
public class ActivityUtils {
protected Stack<Activity> activityStack;
public static ActivityUtils getInstance(){
return ActivityUtilHolder.mInstance;
}
private static class ActivityUtilHolder {
private static final ActivityUtils mInstance = new ActivityUtils();
}
private ActivityUtils() {
if (null == activityStack) {
activityStack = new Stack();
}
}
/**
* 添加Activity到堆栈
*/
public void add(Activity activity){
if (null !=activity) {
activityStack.add(activity);
}
}
/**
* 结束指定的Activity
*/
public void remove(Activity activity){
if (null != activity) {
activityStack.remove(activity);
activity.finish();
}