读书人

My “再按一次退后键退出应用”

发布时间: 2012-08-27 21:21:56 作者: rapoo

My “再按一次后退键退出应用”

其实你去网上搜这个标题一大堆的帖子,千篇一律的转自同一个人的帖子!

?

以后大家转帖子先实践一下好不好!

?

网上那个达不到预期效果,第一下正常提示, 如果两秒内再点 就退出 过了两秒点还是会正常提示

?

但是第三次一定会退出。

?

下面是网上疯传的代码:

?

?

private?static?Boolean isExit =?false;????private?static?Boolean hasTask =?false;????Timer tExit =?new?Timer();????TimerTask task =?new?TimerTask() {? ? ??????????@Override????????public?void?run() {????????????isExit =?false;????????????hasTask =?true;????????}????};?????????@Override????public?boolean?onKeyDown(int?keyCode, KeyEvent event) {????????System.out.println("TabHost_Index.java onKeyDown");????????if?(keyCode == KeyEvent.KEYCODE_BACK) {????????????if(isExit ==?false?) {????????????????isExit =?true;????????????????Toast.makeText(this,?"再按一次后退键退出应用程序", Toast.LENGTH_SHORT).show();????????????????if(!hasTask) {????????????????????tExit.schedule(task,?2000);????????????????}????????????}?else?{????????????????finish();????????????????System.exit(0);????????????}????????}????????return?false;

?

????}

?

?

里面的hasTask自从第一次timer后变true后 第二次就是只是显示toast了 不会去修改isExist变量了

?

这样第三次会直接进入到else里面finish程序。

?

如果不要hasTask会在第二次 点的时候说timer有任务了 而崩溃

?

但是如果每次都新建一个timer就可以解决这个问题

?

一下是我的代码,有错请指出:

?

?

private Boolean isPressedBack = false;

public boolean onKeyDown(int keyCode, KeyEvent event) {

if (keyCode == KeyEvent.KEYCODE_BACK) {

if (isPressedBack == false) {

isPressedBack = true;

Toast.makeText(this, "再按一次后退键退出应用程序", Toast.LENGTH_SHORT).show();

Timer timer = new Timer();

TimerTask task = new TimerTask() {

public void run() {

isPressedBack = false;

}

};

timer.schedule(task, 2000);


} else {

ActivityFileManager.this.finish();

}

}

return false;

}

读书人网 >移动开发

热点推荐