1. 程式人生 > >Android學習歷程之改良版容器式完全退出應用程式App

Android學習歷程之改良版容器式完全退出應用程式App

對常用的退出應用程式的改良版容器式方法做一下介紹,主要供新人瞭解,如果有什麼不對之處,歡迎指正。它採用的是建立一個類繼承Application,將app中的所有activity都新增到一個List集合中,再點選退出按鈕時,遍歷集合,直接銷燬所有activity,重點是採用弱引用,避免記憶體洩露問題。

一 .   建立自定義類


 
public class ExitApplication extends Application {

    private static ExitApplication sInstance;//全域性唯一應用例項
    private static 
List<WeakReference<Activity>> sList;//儲存所有介面的集合 private ExitApplication(){} /** * 獲取全域性唯一應用例項 * @return * 返回全域性唯一應用例項 */ public static ExitApplication getInstance(){ if (sInstance == null){ synchronized (ExitApplication.class){ if
(sInstance == null){ sInstance = new ExitApplication(); sList = new ArrayList<>(); } } } return sInstance; } /** * 新增傳入介面到集合中 * @param activity * 傳入的介面 */ public void addActivity
(Activity activity){ if (sList == null){ sList = new ArrayList<>(); } sList.add(new WeakReference<>(activity)); } /** * 銷燬所有介面,退出應用,並停止網路狀態監聽服務 * @throws Exception * 當儲存介面集合為空時,丟擲異常 */ public void exitApplication() throws IllegalArgumentException { if (sList == null){ throw new IllegalArgumentException("儲存activity的集合為空異常!"); } for (WeakReference<Activity> reference: sList){ if (reference.get() != null){ reference.get().finish(); } } } }

 

二 .   在每個activity中新增


 
ExitApplication.getInstance().addActivity(this);

三 .  在需要實現完全退出app功能的地方新增


 
ExitApplication.getInstance().exitApplication();