您的位置:首页 > 其它

安卓按两次返回键退出程序

2015-11-13 22:10 330 查看
很多应用程序都有按两次返回键退出程序的设置,其实很简单,这里通过广播实现。

先定义一个BaseActivity,让所有的Activity都继承自这个类,在这个类里面定义一个广播接收类,收到广播后finish(),这样的话所有的Activity都会有这个接收广播的方法,收到后都会finish结束。

在onResume()方法里面注册广播,在这个类销毁时注销广播,记得销毁,不然会一直占用系统的内存。

public class BaseActivity extends Activity {
BroadcastReceiver finishApplicationBroadcastReceiver = new BroadcastReceiver() {

@Override
public void onReceive(Context context, Intent intent) {
// TODO Auto-generated method stub
finish();
}
};

protected void onResume() {
super.onResume();
IntentFilter filter = new IntentFilter();
filter.addAction("com.example.gouchao");
this.registerReceiver(finishApplicationBroadcastReceiver, filter);
};

@Override
protected void onDestroy() {
// TODO Auto-generated method stub
this.unregisterReceiver(finishApplicationBroadcastReceiver);
super.onDestroy();
}
}


在你需要按两次返回键退出程序的Activity中发送广播。

// 连按两次退出应用
// 记录时间
private long exitTime = 0;

@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
// TODO Auto-generated method stub
if (keyCode == KeyEvent.KEYCODE_BACK) {
if (System.currentTimeMillis() - exitTime > 2000) {
Toast.makeText(MainActivity.this, "再按一次退出程序",
Toast.LENGTH_SHORT).show();
exitTime = System.currentTimeMillis();
} else {
exitApp();
}
}
return true;
}
//发送广播
public void exitApp() {
Intent intent = new Intent();
intent.setAction("com.example.gouchao");
this.sendBroadcast(intent);
}


记得onKeyDown()方法里面要返回true,不然按一次返回键就直接返回到上一个Activity了
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: