Android(安卓)点击两次返回键退出程序
16lz
2022-04-05
[java] view plain copy
- <spanstyle="font-size:14px;">packagecom.test.twiceexit;
- importjava.util.Timer;
- importandroid.app.Activity;
- importandroid.os.Bundle;
- importandroid.os.Handler;
- importandroid.os.Message;
- importandroid.view.KeyEvent;
- importandroid.view.Menu;
- importandroid.widget.Toast;
- publicclassMainActivityextendsActivity{
- privatestaticBooleanisQuit=false;
- privatelongmExitTime=0;
- Timertimer=newTimer();
- @Override
- protectedvoidonCreate(BundlesavedInstanceState){
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_main);
- }
- @Override
- publicbooleanonCreateOptionsMenu(Menumenu){
- //Inflatethemenu;thisaddsitemstotheactionbarifitispresent.
- getMenuInflater().inflate(R.menu.main,menu);
- returntrue;
- }
- /**************************************************
- *方法一
- *************************************************/
- //@Override
- //publicbooleanonKeyDown(intkeyCode,KeyEventevent){
- //if(keyCode==KeyEvent.KEYCODE_BACK){
- //if(isQuit==false){
- //isQuit=true;
- //Toast.makeText(getBaseContext(),"再按一次返回键退出程序",
- //Toast.LENGTH_SHORT).show();
- //TimerTasktask=null;
- //task=newTimerTask(){
- //publicvoidrun(){
- //isQuit=false;
- //}
- //};
- //timer.schedule(task,2000);
- //}else{
- //finish();
- //System.exit(0);
- //}
- //}
- //returnfalse;
- //}
- /**************************************************
- *方法二
- *************************************************/
- //@Override
- //publicbooleanonKeyDown(intkeyCode,KeyEventevent){
- //if(keyCode==KeyEvent.KEYCODE_BACK){
- //if((System.currentTimeMillis()-mExitTime)>2000){//
- ////如果两次按键时间间隔大于2000毫秒,则不退出
- //Toast.makeText(this,"再按一次退出程序",Toast.LENGTH_SHORT).show();
- //mExitTime=System.currentTimeMillis();//更新mExitTime
- //}else{
- //System.exit(0);//否则退出程序
- //}
- //returntrue;
- //}
- //returnsuper.onKeyDown(keyCode,event);
- //
- //}
- /**************************************************
- *方法三
- *************************************************/
- HandlermHandler=newHandler(){
- @Override
- publicvoidhandleMessage(Messagemsg){
- super.handleMessage(msg);
- isQuit=false;
- }
- };
- @Override
- publicbooleanonKeyDown(intkeyCode,KeyEventevent){
- if(keyCode==KeyEvent.KEYCODE_BACK){
- if(!isQuit){
- isQuit=true;
- Toast.makeText(getApplicationContext(),"再按一次退出程序",
- Toast.LENGTH_SHORT).show();
- //利用handler延迟发送更改状态信息
- mHandler.sendEmptyMessageDelayed(0,2000);
- }else{
- finish();
- System.exit(0);
- }
- }
- returnfalse;
- }
- }
- </span>
推荐使用第二种,该方法相对来说降低系统消耗!
源码地址:http://download.csdn.net/detail/dadaxiaoxiaode/5815849
ref:http://blog.csdn.net/yelangjueqi/article/details/9472705
http://blog.csdn.net/h7870181/article/details/8906596
更多相关文章
- Android(安卓)WebView使用全面解析(加载网络资源、本地HTML,JS交互
- android TelephonyManager类的方法
- Android方法的传递值及其改变
- Android(安卓)正确进入全屏和退出全屏的姿势
- android中的定时器
- Android(安卓)Http请求失败解决方法
- Glide的with()方法和生命周期的源码分析
- 浅谈Java中Collections.sort对List排序的两种方法
- Python list sort方法的具体使用