写这边文章是因为,查看了太多网上错误的例子,因此想借此经验让大家明白优雅的退出APP的过程。
1.功能需求
公司要开发一款android APP,要求能按系统的‘退出键’进行退出,退出键退出很简单
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK || keyCode == KeyEvent.KEYCODE_HOME) {
Timer timer = new Timer();
timer.schedule(new TimerTask() {
@Override
public void run() {
ActivityManager.getInstance().exitApp();
}
}, 500);
return true;
}
return super.onKeyDown(keyCode, event);
}
KeyEvent.KEYCODE_BACK,表示用户按了系统返回键,
return true;表示拦截了该事件,不再向下执行系统的super.onKeyDown(keyCode, event);逻辑,当然如果业务需要,可以继续执行系统逻辑。
关键在
ActivityManager.getInstance().exitApp();
我贴出代码
package com.yys.utils;
import android.app.Activity;
import android.app.Application;
import java.lang.ref.WeakReference;
import java.util.Stack;
/**
* Activity管理类
* <p>
* 添加/删除 建议在{@link Application#registerActivityLifecycleCallbacks(Application.ActivityLifecycleCallbacks)}中统一处理
* (此方法比在BaseActivity中处理要好)
*/
public class ActivityManager {
private static Stack<WeakReference<Activity>> mActStack = new Stack<>();
private static class Singleton {
private static final ActivityManager INSTANCE = new ActivityM