安卓學習之--如何關閉所有的activity


根據Activity的聲明周期 
方法1
   我們知道Android的窗口類提供了歷史棧,我們可以通過stack的原理來巧妙的實現,這里我們在A窗口打開B窗口時在Intent中直接加入標志 Intent.FLAG_ACTIVITY_CLEAR_TOP,這樣開啟B時將會清除該進程空間的所有Activity。 

在A窗口中使用下面的代碼調用B窗口 
Java代碼 

Intent intent = new Intent(); 
intent.setClass(Android123.this, CWJ.class); 
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);  //注意本行的FLAG設置 
startActivity(intent) 

 

方法2: 

在調用退出方法中寫上

MyApplication.getInstance().exit();

public class MyApplication extends Application {

        private List<Activity> activityList = new LinkedList<Activity>();
        private static MyApplication instance;

        private MyApplication() {
        }

        // 單例模式中獲取唯一的MyApplication實例
        public static MyApplication getInstance() {
                if (null == instance) {
                        instance = new MyApplication();
                }
                return instance;

        }

        // 添加Activity到容器中
        public void addActivity(Activity activity) {
                activityList.add(activity);
        }

        // 遍歷所有Activity並finish
        /*
         * 在每一個Activity中的onCreate方法里添加該Activity到MyApplication對象實例容器中
         * 
         * MyApplication.getInstance().addActivity(this);
         * 
         * 在需要結束所有Activity的時候調用exit方法
         * 
         * MyApplication.getInstance().exit();
         */
        public void exit() {

                for (Activity activity : activityList) {
                        activity.finish();
                }

                System.exit(0);

        }


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM