2 u012989337 u012989337 于 2014.09.19 10:07 提问

android开发调用系统返回键出问题了,求救。。。

首先从主界面跳转登陆界面(只要登陆状态为 false 就跳转登陆)
Intent intent = new Intent(); //跳转登陆界面
intent.setClass(MyWorkActivity.this, LoginActivity.class);
startActivityForResult(intent, 2);

登陆成功是要返回主界面的,同时是要求登陆返回一定数据回来的
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if(data == null)
{
System.exit(0);
}
target = data.getExtras().getString("result");//得到新Activity 关闭后返回的数据
}

在登录界面如果登陆成功
Intent intent = new Intent();//数据是使用Intent返回
intent.putExtra("result", "LoginActivity");//把返回数据存入Intent
LoginActivity.this.setResult(RESULT_OK, intent);//设置返回数据
LoginActivity.this.finish();//关闭Activity

但是在登陆如果使用系统的返回键就一直不成功
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
//二次返回退出
if (keyCode == KeyEvent.KEYCODE_BACK) {
if ((System.currentTimeMillis() - exitTime) > 2000) {
exitTime = System.currentTimeMillis();
Toast.makeText(this, "再按一次退出", Toast.LENGTH_LONG).show();
} else {
System.exit(0);

}
return false;
}else
{
return super.onKeyDown(keyCode, event);
}
}

exitTime为long类型变量

但是一直不成功,双击系统返回键,都是一闪然后继续在登陆界面,有些android机子是在第二次双击的时候退出整个应用,,,求大神指导问题出在哪,怎么才能在第一次双击系统返回键就退出当前的应用程序?? 急,,急,,急,, 求教。。。

2个回答

u011747899
u011747899   2014.09.19 17:37

在自定义application类中用一个arrylist list记录所有打开过的activity,当双击返回键这个事件触发后依次finish掉list数组里面所有的activity。

u012989337
u012989337 我一旦finish掉当前登陆界面,就回到主界面,主界面检测到登录状态为false,又会重新回到登陆界面
大约 3 年之前 回复
liguan843607713
liguan843607713   2014.12.08 21:41

首先没有哪个程序是从主界面调到登陆界面 然后再登陆界面直接点两下返回键就能直接退出程序的吧。所有的程序基本都是在主界面上点击两下返回才退出程序的。
再者我也按你的方法测试了一下的问题是第一次点击两下闪一下又回到了登陆界面,第二次双击就可以关闭整个程序了,这个问题有待深究……
有个折中的解决方法:将onkeydown中的system.exit(0)改为 resultActivity.this.finsh():然后在OnActivityResult中判断返回值
if(data==null){ system.exit(0);} 这样可以实现在第一次双击的时候退出整个程序,不过就是中间会返回组界面一会,有时像卡顿似得。
其他好的方法还有待研究。。。。。。。(学习交流,不洗勿喷)

Csdn user default icon
上传中...
上传图片
插入图片