Activity技巧三重奏之二:隨時隨地的退出程序

說明:該知識點總結自郭霖的《第一行代碼》

背景:
假設有如下場景,一個應用程序中,用戶從Activity A進入了Activity B,又從Activity B進入了Activity C,又從Activity C進入了Activity D,現在用戶想退出,必須按4下back鍵,這極大的影響了用戶的體驗,這時就需要一個能隨時隨地退休註銷的解決方案。

解決方案:
創建一個活動管理器類ActicityCollector,代碼如下:

package com.example.hhhhwei.testintent;

import android.app.Activity;

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

public class ActivityCollector {

   public static List<Activity> activities = new ArrayList<Activity>();

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

    public static void remove(Activity activity){
        activities.remove(activity);
    }

    public static void quit(){
        for(Activity activity : activities){
            if(!activity.isFinishing()){
                activity.finish();
            }
        }
    }

}

然後修改Activity技巧三重奏之一中的BaseActivity.

package com.example.hhhhwei.testintent;

import android.app.Activity;
import android.os.Bundle;
import android.util.Log;

public class BaseActivity extends Activity{

    private static final String TAG = "BaseActivity";

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        Log.d(TAG, getClass().getSimpleName());
        ActivityCollector.addActivity(this);
    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
        ActivityCollector.remove(this);
    }
}

之後使之前繼承自Activity的類繼承自BaseActivity既可。
在想要擁有一鍵退出類中定義一下觸發控件(如按鈕Button),一點Button就直接調用ActivityCollector.quit()就可達到直接退出的目的。

發佈了33 篇原創文章 · 獲贊 93 · 訪問量 7萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章