如何退出Activity?如何安全退出已呼叫多個Activity的Application?
阿新 • • 發佈:2019-02-09
如果你的應用程式有很多Activity,而你又不在MainActivity上,要退出主介面,你需要連續多次按Back鍵才行。按Home鍵只是掛起,並沒有退出程式。
解決辦法:只需要一個專門的集合類對所有的活動進行管理就可以了。在活動管理器中,使用一個List來暫存活動,然後提供一個addActivity()方法用於向List中新增一個活動,使用removeActivity方法用於從List中移除活動,最後提供了一個finishAll()方法用於將List中所有的活動都全部銷燬。
自定義一個BaseActivity讓每個Activty都繼承它,實現將Activity向活動集合中新增或刪除的動作。public class ActivityCollector { public static List<Activity> activities=new ArrayList<Activity>(); public static void addActivity(Activity activity) { activities.add(activity); } public static void removeActivity(Activity activity) { activities.remove(activity); } public static void finishAll()//退出所有的Activity { for(Activity activity:activities) { if(!activity.isFinishing()) { activity.finish();//退出Activity } } } }
public class BaseActivity extends Activity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); this.requestWindowFeature(Window.FEATURE_NO_TITLE);//去掉標題欄 ActivityCollector.addActivity(this); } @Override protected void onDestroy() { super.onDestroy(); ActivityCollector.removeActivity(this); } }
程式中一般有退出按鈕。只要在點選按鈕的時候,呼叫ActivityCollector.finishAll()方法,即可直接退出程式。
所以標題的答案就是:單一的Activity呼叫finish()方法即可。如果是多個Activity,我們可以定義一個活動集合類,對所有的活動進行管理。實現建立的時候將Activity快取在List中,銷燬的時候從List中移除。按退出按鈕,則遍歷整個List將Activity一一銷燬。