两次点击BACK键退出应用的效果

来源:互联网 发布:淘宝批发商诈骗 编辑:程序博客网 时间:2024/05/18 03:21

首先是监听返回键的方法,有两种:

  1. 在Activity中可以重写如下方法
    public void onBackPressed() {        Log.i(TAG,"返回键被点击了。");        //需要屏蔽返回键注释此行代码即可        super.onBackPressed();//此方法自动调用finish()    }

  2. @Override    public boolean onKeyDown(int keyCode, KeyEvent event) {        Log.i(TAG,"返回键被点击了。");        //需要屏蔽返回键返回false即可        //return false;        return super.onKeyDown(keyCode, event);    }

实现:

public class MainActivity extends AppCompatActivity {    public static String TAG = "MainActivity";    private boolean goBack = false;    private boolean hasTask = false;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);    }    Timer timer = new Timer();    TimerTask task = new TimerTask() {        @Override        public void run() {            hasTask = true;            goBack = true;        }    };    @Override    public void onBackPressed() {        Log.i(TAG, "返回键被点击了。");        if (goBack) {            goBack = true;            Toast.makeText(getApplicationContext(), "再按一次返回键退出", Toast.LENGTH_SHORT).show();            if (!hasTask) {                timer.schedule(task, 3000);            }        } else {            super.onBackPressed();        }    }
参考:

private long exitTime = 0;@Overridepublic boolean onKeyDown(int keyCode, KeyEvent event) {    if(keyCode == KeyEvent.KEYCODE_BACK && event.getAction() == KeyEvent.ACTION_DOWN){           if((System.currentTimeMillis()-exitTime) > 2000){              Toast.makeText(getApplicationContext(), "再按一次退出程序", Toast.LENGTH_SHORT).show();                                            exitTime = System.currentTimeMillis();           } else {            finish();            System.exit(0);        }        return true;       }    return super.onKeyDown(keyCode, event);}


0 0
原创粉丝点击