一度に複数のActivityを閉じる
1849 ワード
まず原理を言えば、複数のActivityを閉じる場所で1つのブロードキャストを発行し、閉じるActivityでは、これらのブロードキャストを登録することで、複数を一気に閉じることができます.もちろんコードの良好さのために、BaseActivityというActivityを明らかにしなければなりません.そうすれば、コードを1つの場所に書くだけでいいです.まず、BaseActivityでブロードキャスト受信者を宣言します.コードは次のとおりです.
更に3つの方法を書いて、この放送を登録して、この放送を登録して、この放送をスタートさせて、まず私達は1つの常亮を定義して、この放送のactionをスタートさせて、例えばFINISH_と言いますACTION;コードは次のとおりです.
注記:通常、シャットダウンが必要なActivityでは、onResum()メソッドにブロードキャストが登録され、onDestroy()でブロードキャストがキャンセルされ、他のActivityをシャットダウンする必要がある場合は起動ブロードキャストが呼び出されます.前提:この一連のActivityは、これらのメソッドを含むBaseActivityを統合する必要があります.
最後に、終了プログラムをダブルクリックするコードを追加します.次のようにします.
やった!
protected BroadcastReceiver finishAppReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
finish();
}
};
更に3つの方法を書いて、この放送を登録して、この放送を登録して、この放送をスタートさせて、まず私達は1つの常亮を定義して、この放送のactionをスタートさせて、例えばFINISH_と言いますACTION;コードは次のとおりです.
protected final String FINISH_ACTION = "finish_action";
/**
*
*/
protected void registerQuitBroadcast(){
IntentFilter filter = new IntentFilter();
filter.addAction(FINISH_ACTION);
this.registerReceiver(finishAppReceiver,filter);
}
/**
*
*/
protected void unregisterQuitBroadcast(){
this.unregisterReceiver(finishAppReceiver);
}
/**
*
*/
protected void startQuitBroadcast(){
Intent intent = new Intent();
intent.setAction(FINISH_ACTION);
this.sendBroadcast(intent);
}
注記:通常、シャットダウンが必要なActivityでは、onResum()メソッドにブロードキャストが登録され、onDestroy()でブロードキャストがキャンセルされ、他のActivityをシャットダウンする必要がある場合は起動ブロードキャストが呼び出されます.前提:この一連のActivityは、これらのメソッドを含むBaseActivityを統合する必要があります.
最後に、終了プログラムをダブルクリックするコードを追加します.次のようにします.
private long exitTime = 0;
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (KeyEvent.KEYCODE_BACK == keyCode) {
if (System.currentTimeMillis() - exitTime > 2000) {
Toast.makeText(getApplicationContext(),
" ",Toast.LENGTH_SHORT).show();
exitTime = System.currentTimeMillis();
} else {
startQuitBroadcast();
}
return true;
}
return super.onKeyDown(keyCode, event);
}
やった!