子を再起動するには呼び出しアクティビティが必要です。つまり、子アクティビティが既に存在する場合は、それを閉じてから再度起動します。親と子の間の履歴/関係を維持します。つまり、子から押し返すと、親に行きたい
CLEAR_TOP は、アクティビティが既に存在する場合は再起動しないことを示しています
NEW_TASK は、子アクティビティを望ましくないアプリのルートにするように聞こえます
子を再起動するには呼び出しアクティビティが必要です。つまり、子アクティビティが既に存在する場合は、それを閉じてから再度起動します。親と子の間の履歴/関係を維持します。つまり、子から押し返すと、親に行きたい
CLEAR_TOP は、アクティビティが既に存在する場合は再起動しないことを示しています
NEW_TASK は、子アクティビティを望ましくないアプリのルートにするように聞こえます
私の理解によると、3 つ
の要件があります
。それ以外の場合は、singleTask を使用する必要がありますが、子アクティビティは別のタスクのルートに作成されます。
2. 子がすでに存在する場合は、それを閉じてから再度起動し
ます。singleTop と singleTask の両方で、子アクティビティのインスタンスが既に存在する場合 (singleTop の場合、現在のタスク トップに既にインスタンスが存在する場合)、インテントはそれに配信されます。実例。onNewInstance() でアクティビティ ステータスをリセットできます。これには、新しいものを作成するのと同じ効果があります。
3.子から押し返すと、親に行きたい:
singleTop の場合、これ以上の努力は必要ありません。
singleTask の場合、このトリッキーが機能するかどうかを試すことができます。子アクティビティが次に表示するアクティビティを知っている場合は、onDestroy() で startActivity() を呼び出して親アクティビティを手動で開始できます。
Android lauchMode の詳細については、http: //developer.android.com/guide/topics/manifest/activity-element.html#lmode を参照してください。
これを使用してください、私のために働きます
Intent intent = new Intent(getApplicationContext(), MainActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK|Intent.FLAG_ACTIVITY_SINGLE_TOP|Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);
getApplicationContext().startActivity(intent);