再按一次退出程序

/**
 * 点击返回键退出程序
 */
private static Boolean isExit = false;

@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
    if (keyCode == KeyEvent.KEYCODE_BACK) {
        if (isExit == false) {
            isExit = true;
            ToastUtils.show("再按一次退出程序");

            UiUtils.postDelayed(new Runnable() {
                @Override
                public void run() {
                    isExit = false;
                }
            }, 2000);

        } else {
            //退出程序
            BaseActivity.killAll();
        }
    }
    return false;
}

ToastUtils.show("再按一次退出程序");android

使用的以下封装ide

public class ToastUtils {

    private  static Toast toast;

    public static  void show(String msg) {
        if (toast == null) {
            toast = Toast.makeText(UiUtils.getContext(), msg, Toast.LENGTH_LONG);
        } else {
            toast.setText(msg);
        }
        toast.show();

    }
}

UiUtils.postDelayed以下post

public static void postDelayed(Runnable run, int time) {
    BaseApplication.getHandler().postDelayed(run, time); // 调用Runable里面的run方法
}

就是拿到一个主线程handler发送一个延迟方法,2s内有效。线程

public static  void killAll() {
    // 复制了一份mActivities 集合
    List<BaseActivity> copy;
    synchronized (mActivities) {
        copy = new LinkedList<BaseActivity>(mActivities);
    }
    for (BaseActivity activity : copy) {
        activity.finish();
    }
    // 杀死当前的进程
    android.os.Process.killProcess(android.os.Process.myPid());
}

简单的能够直接使用finish()便可退出程序。进程

相关文章
相关标签/搜索