Android開發,完全退出APP的實現

        這是每個APP開發中都會遇到的問題。要完全退出APP,需要結束所有的Activity。在網上看到的一個主要方法是用一個繼承自Application的類存放所有打開的Activity,退出APP時,遍歷所有Activity一一關閉。然而筆者實踐發現,這種方法最後還會遺留某些Activity,原因可能是因爲當前所在的Activity結束後中斷了結束所有Activity過程的執行。

        解決方法很簡單,退出APP時,先結束所有其它的Activity,最後結束當前所在的Activity。代碼如下:

AgentApplication.java

import android.app.Activity;
import android.app.Application;

import java.util.ArrayList;
import java.util.List;


public class AgentApplication extends Application {

    private List<Activity> activities = new ArrayList<>();

    private static AgentApplication instance = null;

    private AgentApplication() {

    }

    public synchronized static AgentApplication getInstance() {
        if (instance == null) {
            instance = new AgentApplication();
        }
        return instance;
    }

    public void addActivity(Activity activity) {
        activities.add(activity);
    }

    @Override
    public void onTerminate() {
        super.onTerminate();

    }

    public void finishAllActivities(Activity activity) {
        for (Activity activity1 : activities) {
            if (activity1 != activity) {
                activity1.finish();
            }
        }
        activity.finish();
        System.exit(0);
    }

}

        使用單例模式設計AgentApplication類。退出APP時,調用其finishAllActivities(Activity activity)方法,參數是當前所在的Activity。

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