说明:该知识点总结自郭霖的《第一行代码》
背景:
假设有如下场景,一个应用程序中,用户从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()就可达到直接退出的目的。