多くのアプリケーションには、リターンキーを2回押すことでプログラムを終了する設定がありますが、実際には非常に簡単です。これはブロードキャストによって実現されます。
最初にBaseActivityを定義して、すべてのアクティビティがこのクラスから継承するようにし、このクラスでブロードキャスト受信クラスを定義し、ブロードキャストを受信した後に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();
}
}
プログラムを終了するためにリターンキーを2回押す必要があるアクティビティで、ブロードキャストを送信します。
// 连按两次退出应用
// 记录时间
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を返すことを忘れないでください。そうでない場合は、returnキーを1回押して、前のアクティビティに直接戻ります。