ハックが、100%ワーキング溶液:あなたはすべての活動を待っているBroadcast
を送信することができ、それは彼らにfinish()
を呼び出します。各アクティビティの
private String action = "clear";
private String type = "content://whatever_you_like"; //You should read stuff about this because it's a hack..
のonCreate:
clearStackManager = new ClearStackManager();
registerReceiver(clearStackManager,
IntentFilter.create(action, type));
それを定義:
private final class ClearStackManager extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
finish();
}
}
onDestroy:
unregisterReceiver(clearStackManager);
がそれを呼び出す:
ボックス・ソリューションのうち
public void clearStack() {
Intent intent = new Intent(action);
intent.setType(type);
sendBroadcast(intent);
}
:(その1以外のすべてのアクティビティを削除する)FLAG CLEAR_TOPとの意思によってコールスタックの最初の活動(それはいつも同じだ場合)、その後onNewIntentに最後の仕上げ1。
それが解決策を動作するかどうか私は知らない:は、私はまた、この発見:https://stackoverflow.com/a/6403577/327011をしかし、私はアクションで働いたことがないので、私は複数のアクティビティが同じアクションを持っている場合、何が起こるかわかりません。
UPDATE:
あなたはグローバルブロードキャストを送信することを避けるために、代わりに "グローバル" 放送のLocalBroadcastManagerを使用する必要があります。
http://developer.android.com/reference/android/support/v4/content/LocalBroadcastManager.html
はこれをテストする機会があったが、すぐに私がそうであるように、それは私が答えとして、それを選択します動作します。 –
インテント経由で通知からブロードキャストを送信することは、方法です。アクティビティは、このブロードキャストをリッスンし、それに従って動作することができます。また、特定の動作をトリガするために、アクティビティのインテントでデータを送信することもできます。 –