Android实现首次点击返回键提示信息,第二次点击退出应用

来源:互联网 发布:人脸识别用什么算法 编辑:程序博客网 时间:2024/05/14 13:33

要实现的效果如图:

这里写图片描述

代码很简单,复写onKeyDown方法,监听到back键的点击就初始化一个时间变量,并给出一个toast。当接下来一定时间内(我这里取的是1.5秒)再次有点击事件时,退出应用。

@Override    public boolean onKeyDown(int keyCode, KeyEvent event) {        if(keyCode == KeyEvent.KEYCODE_BACK){            long secondClickBack = System.currentTimeMillis();            if(secondClickBack - firstClickBack >1500){                Toast.makeText(this, "再按一次退出每一天", 0).show();                firstClickBack = secondClickBack;                return true;            }else{                MyApplication.getInstance().exitApp();                return true;            }        }        return super.onKeyDown(keyCode, event);    }

注意上述代码中有个MyApplication.getInstance().exitApp();

执行这个的前提是实现自定义个MyApplication,代码在后面。

我们在每个Activity的onCreate()方法中调用MyApplication.addActivity方法将当前activity保存进去。等要退出应用时调用MyApplication.exitApp方法将所有activity都finish();

MyApplication代码如下:

package com.zsx.base;import java.util.ArrayList;import android.app.Activity;import android.app.Application;public class MyApplication extends Application {    public static ArrayList<Activity> list;    private static MyApplication myApp = null;    //要保证每个Activity中使用的MyApplication都是同一个,就用到了单例模式    //单例模式:只有一个对象,也就是上面的那个myApp只实例化一次    //由于MyApplication继承自Application,复写的构造函数访问权限不能低于父类的,所以不能为private    //所以我们在这里实现一个伪单例模式    public static MyApplication getInstance(){        if(myApp == null ){            myApp = new MyApplication();            list = new ArrayList<Activity>();        }        return myApp;    }    /**     * 添加activity到数组中     * @param activity     */    public void addActivity(Activity activity){        list.add(activity);    }    /**     * 退出应用,结束所有activity     */    public void exitApp(){        for (Activity activity : list) {            activity.finish();        }    }}
0 0
原创粉丝点击