外部activity
(私のものではない) を一瞬だけ起動する必要があります。その後、ユーザーが表示できるようにservice
以前のものを起動する必要があります。activity
これはうまく機能しますが、問題は、ユーザーが戻るキーを押すと、その外部に到達することactivity
です。
ここには 2 つの異なるactivity
起動があります。1 つは外部用で、もうactivity
1 つはactivity
戻るためのものFLAG_ACTIVITY_NEW_TASK
です ( から起動するため、これを使用する必要がありますservice
)。
FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET
これらの 2 つの起動では、FLAG_ACTIVITY_NO_HISTORY
、FLAG_ACTIVITY_NEW_TASK
、FLAG_ACTIVITY_CLEAR_TOP
、FLAG_ACTIVITY_CLEAR_TASK
、の任意の組み合わせを試しました
FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS
。
activity
何も役に立ちません。押し返した後、私は外部を見続けます。
ここで同様の質問をいくつか見ましたが、それらはすべて独自のアプリで中間のアクティビティを持っているため、finish を呼び出したりnoHistory="true"
、マニフェストで設定したりできます。
何か案は?
更新: 問題は、サービスから以前のアクティビティを再起動することです。つまり、 Tasks and Back Stackのドキュメントから FLAG_ACTIVITY_NEW_TASK を指定する必要があります。
FLAG_ACTIVITY_NEW_TASK 新しいタスクでアクティビティを開始します。開始しようとしているアクティビティに対してタスクがすでに実行されている場合、そのタスクはフォアグラウンドに移動し、最後の状態が復元され、アクティビティは onNewIntent() で新しいインテントを受け取ります。これにより、前のセクションで説明した「singleTask」launchMode 値と同じ動作が生成されます。
そして、singleTask 段落から:
"singleTask" システムは新しいタスクを作成し、新しいタスクのルートでアクティビティをインスタンス化します... 注: アクティビティは新しいタスクで開始されますが、[戻る] ボタンをクリックすると、ユーザーは前のアクティビティに戻ります。
したがって、この動作を何らかの方法でオーバーライドするフラグが必要です...