public class AppManager {
public StackmStack;public ArrayList mActivities;public static AppManager mInstance;public static AppManager getInstance(){ if( mInstance==null ) { mInstance = new AppManager(); } return mInstance;}/** * 添加Activity到栈中 */public void addActivity(Activity activity){ if( mStack==null ){ mStack = new Stack<>(); } mStack.add(activity);}/** * 获取当前Activity */public Activity getCurrentActivity(){ return mStack.lastElement();}/** * 结束指定的Activity */public void killSingleActivity(Activity activity){ if( activity==null ){ return; } mStack.remove(activity); activity.finish();}/** * 结束指定的Activity */public void killSingleActivity(Class cls){ for( Activity activity : mStack ){ if( activity.getClass().equals(cls) ){ killSingleActivity(activity); } }}/** * 结束多个Activity */public void killMoreActivity(ArrayList > activities){ if( mActivities==null ){ mActivities = new ArrayList<>(); } for( Class cls : activities ){ Activity activity = isHere(cls); if( activity!=null ){ mActivities.add(activity); } } mStack.removeAll(mActivities); for( Activity activity : mActivities ){ activity.finish(); } mActivities.clear();}/** * 是否在栈中 */public Activity isHere(Class cls){ for( Activity activity : mStack ){ if( activity.getClass().equals(cls) ){ return activity; } } return null;}/** * 结束所有 */public void killAllActivity(){ for( Activity activity : mStack ){ activity.finish(); } mStack.clear();}/** * 退出程序 */public void exitApp(){ killAllActivity(); System.exit(0);}}复制代码
Activity中使用:
@Overrideprotected void onCreate(Bundle savedInstanceState) { .... AppManager.getAppManager().addActivity(this);}复制代码
//要关闭Activity的地方调用 代替finish() AppManager.getAppManager().killActivity(this);