Android:Activity統一堆疊管理(實現隨時finish特定或是所有Activty)
阿新 • • 發佈:2018-12-25
直接上程式碼:
Activity管理類:AppManager
/** * 應用程式Activity管理類:用於Activity管理和應用程式退出 * * @author BiHaidong * @version 1.0 * @created 2015-9-21 */ public class AppManager { private static Stack<Activity> activityStack = new Stack<Activity>(); /** * 新增Activity到堆疊 */ public static void addActivity(Activity activity) { activityStack.push(activity); } /** * 獲取當前Activity(堆疊中最後一個壓入的) */ public static Activity currentActivity() { return activityStack.lastElement(); } /** * 結束當前Activity(堆疊中最後一個壓入的) */ public static void finishCurrentActivity() { Activity activity = activityStack.pop(); activity.finish(); } /** * 結束指定的Activity */ public static void finishActivity(Activity activity) { if (activity != null) { activityStack.remove(activity); if(!activity.isFinishing()) { activity.finish(); } } } /** * 結束指定類名的Activity */ public static void finishActivity(Class<?> cls) { for (Activity activity : activityStack) { if (activity.getClass().equals(cls)) { finishActivity(activity); } } } /** * 結束所有Activity */ public static void finishAllActivity() { for (Activity activity : activityStack) { if (activity != null) { activity.finish(); } } activityStack.clear(); } /** * 退出應用程式 */ public static void AppExit(Context context) { try { finishAllActivity(); ActivityManager manager = (ActivityManager) context .getSystemService(Context.ACTIVITY_SERVICE); manager.killBackgroundProcesses(context.getPackageName()); System.exit(0); } catch (Exception e) { e.printStackTrace(); } } }
然後是BaseActivity
public class BaseActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
super.setContentView(R.layout.base_layout);
AppManager.addActivity(this);
}
轉載地址:https://blog.csdn.net/u010635353/article/details/49681659