たくさんのステップを経て_Activity_1
_がある
_Activity_2
_ > _Activity_3
_ ....いくつかの_Activity_n
_に関連するいくつかのデータを変更し、_Activity_1
_に関連して呼び出します
_Intent intent = new Intent(Activity_n.this, Activity_1.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);
_
コンテンツを更新します。しかし、後で、私が始めた_Activity_1
_に戻ることができます。そこには古いデータがあります。
代わりに、上記のコードを使用して、最初の_Activity_1
_のonResume()
が呼び出されるようにします。または適切なフラグ
FLAG_ACTIVITY_CLEAR_TOP
a、B、C、Dのアクティビティで構成されるタスクを考えます。DがアクティビティBのコンポーネントに解決するインテントでstartActivity()を呼び出すと、CとDは終了し、Bは指定されたインテントを受信します。現在のスタック:A、B.
それはドキュメントが言っていることですが、私が得ているものではありません。
この2行を追加して試すことができます
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
Activity内のマニフェストファイルにこれを記述します
<activity
Android:name=".SettingsActivity"
Android:launchMode="singleInstance"
Android:screenOrientation="portrait" >
</activity>
「singleTask」および「singleInstance」アクティビティは、タスクのみを開始できます。それらは常にアクティビティスタックのルートにあります。さらに、デバイスはアクティビティのインスタンスを一度に1つだけ保持できます。そのようなタスクは1つだけです。
SingleTaskまたはSingleInstanceを使用できます
"singleTask"-システムは、新しいタスクのルートでアクティビティを作成し、そのタスクにインテントをルーティングします。ただし、アクティビティのインスタンスが既に存在する場合、システムは、新しいインスタンスを作成するのではなく、onNewIntent()メソッドの呼び出しを通じてインテントを既存のインスタンスにルーティングします。
「singleInstance」-「singleTask」と同じですが、システムはインスタンスを保持するタスクに他のアクティビティを起動しません。アクティビティは常にそのタスクの唯一かつ唯一のメンバーです。
このリンクを参照してください http://developer.Android.com/guide/topics/manifest/activity-element.html
intent.setFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);
アクセス: http://developer.Android.com/reference/Android/content/Intent.html#FLAG_ACTIVITY_REORDER_TO_FRONT
バックスタックが存在する場合はバックスタックからActivity
を再開するか、存在しない場合は新しいものを作成します
Android:launchMode="singleTask"
この行をアプリのAndroidManifest.xmlに追加し、通常のIntent
でアクティビティを開始します。