//自定义BaseActivity继承自Activity
public class BaseActivity extends Activity {
//记录第一次点击Back键的时间
private long exitTime;
<span style="white-space:pre"> </span>//该Receiver用来接收广播finish Activity
BroadcastReceiver exitReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
String action = intent.getAction();
if (action.equals("exit")) {
finish();
}
}
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);<span style="font-family: Arial, Helvetica, sans-serif;"> </span>
<span style="white-space:pre"></span><pre name="code" class="java"><span style="white-space:pre"> </span>//注册监听器
IntentFilter filter = new IntentFilter();
filter.addAction("exit");
this.registerReceiver(exitReceiver, filter);
//赋初值
exitTime = System.currentTimeMillis();
}
@Override
protected void onDestroy() {
<span style="white-space:pre"> </span>//取消监听器注册
this.unregisterReceiver(exitReceiver);
super.onDestroy();
}
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
<span style="white-space:pre"> </span>//监听事件
if (keyCode == KeyEvent.KEYCODE_BACK
&& event.getAction() == KeyEvent.ACTION_DOWN) {
<span style="white-space:pre"> </span>//第一次点击和第二次点击间隔大于2秒,则不退出,否则退出
if ((System.currentTimeMillis() - exitTime) > 2000) {
<span style="white-space:pre"> </span>//提醒用户
Toast.makeText(getApplicationContext(), "再按一次退出程序",
Toast.LENGTH_SHORT).show();
<span style="white-space:pre"> </span>//得到第一次点击的时间
exitTime = System.currentTimeMillis();
} else {
Intent exitIntent = new Intent();
exitIntent.setAction("exit");
getApplicationContext().sendBroadcast(exitIntent);
}
return true;
}
return false;
}
}
最后应用中的Activity都继承该BaseActivity,则能实现点击两次返回键实现退出程序