天天看點

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。