一次退出多個Activity的方法

    面試的時候多次被問到一次退出多個Activity的方法,其實方法是有多種的,其實主要考對Android機制的理解和運用。我參考各們網友的東西加上自己的思考,覺得有下面幾種方法:

1.使用鏈表把要退出的Activity實例保存起來,在要退出時,遍例這個鏈表,調用每個Activity的finish方法。具體點講:
在每個Activity的onCreate方法中添加類似代碼:SysApplication.getInstance().addActivity(this);在需要退出程序的時候,調用:SysApplication.getInstance().exit();簡而言之,通過單例模式把每個Activity 的引用添加到一個全局鏈表中,每次退出程序調用System.exit(0)時,先調用鏈表中Activity 的finish方法.

2.可以使用廣播,每個Activity中收到這個廣播,自己把自己finish掉。

3.可以在要退出Activity的onStart方法中加入以下code:

   MyApplication mApp = (MyApplication)getApplication();
   mApp.setExit(true);
   finish();

4.假如Activity的啓動順序是:A->B->C->D,我們想在D中把所有的Acitivity都清理掉,那麼做法是:

   A的Manifest.xml配置成android:launchMode="singleTop" ,D窗口打開A窗口的Intent加入標識Intent.FLAG_ACTIVITY_CLEAR_TOP,這樣會把棧中B

 C,D都清除掉,同時因爲A是的啓動模式是singleTop,不會調用onCreate,而是調用onNewIntent,這時判斷intent的值,如果爲Intent.FLAG_ACTIVITY_CLEAR_TOP,則把A finish掉,這樣A,B,C,D都finish掉了。

5.還是Activity的啓動順序是:A->B->C->D,可以把A的起動模式設成singleTask,從D起動A,會把棧中位於他之上的Activity都kill掉,然後在A的onNewIntent中把A finish掉。


上面是幾種方法,應該都可以,具體的應用就要看場景了。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章