現在のアクティビティを新しいアクティビティに置き換える必要があります。つまり、新しいアクティビティを開始し、現在のアクティビティをタスクスタックから削除します。
ドキュメントに基づいて、最善の方法は、通常どおり Activity.startActivity を使用してアクティビティを開始し、すぐに Activity.finish を呼び出して現在のアクティビティを閉じることです。
これはこれらのAPIの有効な使用法ですか、それとも他に何かすべきですか?
はい。この方法でapiを使用しても問題ありません。
これを実現する適切な方法は、以下を使用することです。
Intent intent = new Intent(this,MyActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_TASK_ON_HOME);
startActivity(intent);
this.finish();
コードは、あなたがアクティビティにいると想定します。それ以外の場合、フラグメントを使用している場合はgetActivity()を使用します
このようにして、アクティビティが開始され、戻るボタンの階層が適切に設定され、適切なアクティビティも破棄されます。
FLAG_ACTIVITY_TASK_ON_HOME
、FLAG_ACTIVITY_NEW_TASK
インテントフラグ
アクティビティにAndroid:launchMode = "singleInstance"を追加し、onNewIntentメソッドをオーバーライドして日付を更新できます
アクティビティを開始するときにFLAG_ACTIVITY_CLEAR_TASKを使用できます。また、マニフェストのアクティビティのlaunchModeをsingleTaskとして定義しましたが、それは、新しいアクティビティでその動作が必要だったためです。 startActivityにフラグFLAG_ACTIVITY_CLEAR_TASKを渡す限り、新しいアクティビティでlaunchModeに何を使用しても、前のアクティビティのクリアに関して必要なものを取得できると思います。