1. 程式人生 > >如何退出Activity?如何安全退出已呼叫多個Activity的Application?

如何退出Activity?如何安全退出已呼叫多個Activity的Application?

如果你的應用程式有很多Activity,而你又不在MainActivity上,要退出主介面,你需要連續多次按Back鍵才行。按Home鍵只是掛起,並沒有退出程式。

解決辦法:只需要一個專門的集合類對所有的活動進行管理就可以了。在活動管理器中,使用一個List來暫存活動,然後提供一個addActivity()方法用於向List中新增一個活動,使用removeActivity方法用於從List中移除活動,最後提供了一個finishAll()方法用於將List中所有的活動都全部銷燬。

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
            }
        }
    }
}
自定義一個BaseActivity讓每個Activty都繼承它,實現將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一一銷燬。