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;
System.out.println(""+isExit);
}
}; public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK) {
if (isExit == false) {
isExit = true;
Toast.makeText(this, "再按一次退出程序", Toast.LENGTH_SHORT).show();
if (!hasTask) {
//hasTask=false;
tExit.schedule(task, 2000);
}
} else {
finish();
System.exit(0);
}
}
return false;
}这个程序是刚刚小弟从网上看的,但是敲完之后测试发现,第一次测试,点击返回键,等一会再点击,没有退出,程序不关闭,再次测试,无论等多久,第二次点击返回键都没退出,发现,第二次并没有进入到线程的那个方法中去,求大神赐教
private static Boolean hasTask = false;
Timer tExit = new Timer(); TimerTask task = new TimerTask() {
@Override
public void run() {
isExit = false;
hasTask = true;
System.out.println(""+isExit);
}
}; public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK) {
if (isExit == false) {
isExit = true;
Toast.makeText(this, "再按一次退出程序", Toast.LENGTH_SHORT).show();
if (!hasTask) {
//hasTask=false;
tExit.schedule(task, 2000);
}
} else {
finish();
System.exit(0);
}
}
return false;
}这个程序是刚刚小弟从网上看的,但是敲完之后测试发现,第一次测试,点击返回键,等一会再点击,没有退出,程序不关闭,再次测试,无论等多久,第二次点击返回键都没退出,发现,第二次并没有进入到线程的那个方法中去,求大神赐教
解决方案 »
- 安卓开发,程序在后台不运行。
- Valid ABIs: no ABIs ABI的问题
- 求教,Preference如何实现长按监听
- 100分求助,android调用webservice异常org.xmlpull.v1.XmlPullParserException
- thank
- 提供jar包还是给个service比较好呢
- android 多个 ListView 共用滚动条
- JAVA的byte[]转到 native中的 unsigned char的问题
- 急!安卓设备中SD卡在windows下写100M以上的数据出现参数错误?
- Android URLconnection
- 关于安卓JNI调用的问题,请教各位前辈!!!!!!!!
- Fragment需要和service通信,用广播怎么实现?
private Exit exit = new Exit(); ...... @Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if(keyCode == KeyEvent.KEYCODE_BACK){
pressAgainExit();
return true;
}
return super.onKeyDown(keyCode, event);
} ...... private void pressAgainExit() {
if (exit.isExit()) {
counterService.stopCounter();
MainActivity.this.finish();
View v = new View(null);
v.clearFocus();
} else {
Toast.makeText(getApplicationContext(), "再按一次退出程序", Toast.LENGTH_LONG).show();
exit.doExitInOneSecond();
}
}
Exit.java 如下package jim.zhang.broadcast.util;import android.os.Handler;
import android.os.HandlerThread;
import android.widget.Toast;public class Exit {
private boolean isExit = false;
private Runnable task = new Runnable() {
@Override
public void run() {
isExit = false;
}
}; public void doExitInOneSecond() {
isExit = true;
HandlerThread thread = new HandlerThread("doTask");
thread.start();
new Handler(thread.getLooper()).postDelayed(task, 4000);
} public boolean isExit() {
return isExit;
} public void setExit(boolean isExit) {
Toast.makeText(null, "再按一次退出程序", Toast.LENGTH_SHORT).show();
this.isExit = isExit;
}
}