关于按两次返回退出程序的有关问题。

关于按两次返回退出程序的问题。求助!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
我做了一个程序,大致内容是,第一次运行程序时,出现导航页,就类似于微信那样的介绍页。以后运行就不会出现这样的导航页了。

我的问题来了:第一次运行程序,进入主程序,按两次返回键,并没有退出程序,直接跳到了导航页,又进入主程序,然后按两次返回,又跳到导航页。这样无限循环了。

可是,第二次以后运行程序就不会这样了,点开程序,直接进入程序主界面,然后按两次返回键,成功退出程序。这是为什么?能有人解决一下吗?


我把按两次返回退出程序的代码贴上:

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) {
// TODO Auto-generated method stub
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;
}

------解决方案--------------------
第一,进入主界面时,你要finish掉启动页;
第二,修改你Activity的lunchmode;
------解决方案--------------------
导航页跳转的时候,要finish
------解决方案--------------------
引用:
Quote: 引用:

第一次是不是没识别你的自定义返回键啊


我没用自定义返回键啊,就是手机上的返回键
你不是写了按下key。back的事件么,第一次它可能没有加载到,我是这么认为的不知道是不是,,,
------解决方案--------------------
你只需要重写onBackPressed()方法就好了。
首先你声明一个成员变量long mfirstPressed;
	@Override
public void onBackPressed() {
if (System.currentTimeMillis() - mFirstPressed > 1000) {
Toast.makeText(this, "再按一次就退出", Toast.LENGTH_SHORT).show();
mFirstPressed = System.currentTimeMillis();
} else {
super.onBackPressed();
}
}

------解决方案--------------------
onBackPressed可以参考其他应用怎么写的