按回退键完全关闭所有Activity

来源:互联网 发布:电动汽车充电软件 编辑:程序博客网 时间:2024/06/05 01:05

BaseActivity:

让需要在当前界面可以直接退出程序的Activity继承于BaseActivity。

public class BaseActivity extends Activity {    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        Log.d("BaseActivity", getClass().getSimpleName());        ActivityCollector.addActivity(this);    //表示将当前正在创建的活动添加到活动管理器    }    @Override    protected void onDestroy() {        super.onDestroy();        ActivityCollector.removeActivity(this);    //表示将一个即将销毁的活动从活动管理器移除    }}

活动管理器ActivityCollector:

public class ActivityCollector {    public static List<Activity> activities = new ArrayList<Activity>();    //作为收集活动的集合 此处用Set HashSet可以去重复,防止一个Activity多次添加    public static void addActivity(Activity activity) {        activities.add(activity);    }    public static void removeActivity(Activity activity) {        activities.remove(activity);    }    public static void finishAll() {        for (Activity activity : activities) {            if (!activity.isFinishing()) {                activity.finish();            }        }    }}

在需要设置按回退键就完全退出整个程序的Activity(需要继承BaseActivity)上添加:

public boolean onKeyDown(int keyCode, KeyEvent event) {    if (keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0) {        ActivityCollector.finishAll();        return true;    } else        return super.onKeyDown(keyCode, event);}



0 0