再按一次退出程序

/**
 * 點擊返回鍵退出程序
 */
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()便可退出程序。進程

相關文章
相關標籤/搜索