很多应用程序都有按两次返回键退出程序的设置,其实很简单,这里通过广播实现。
先定义一个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了