說明:該知識點總結自郭霖的《第一行代碼》
背景:
假設有如下場景,一個應用程序中,用戶從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()就可達到直接退出的目的。