3

FLAG_ACTIVITY_NEW_TASK が無視される場合はありますか? サービスから、そのフラグを設定する目的でアクティビティを開始し、メインのアクティビティがバックグラウンドにあるときに、新しいタスクで新しいアクティビティが表示されることを期待していたので、アプリケーションが再びバックグラウンドで表示されることを期待していました新しいアクティビティを閉じます。それは起こらず、主な活動を示しています。

テストのために、メインアクティビティをsingleInstanceとして設定しようとしましたが、その場合は機能します。ただし、メイン アクティビティを singleInstance として設定したくありません。

これがいつ起こるか知っていますか?

すべてのデバイスでこの動作が見られるため、デバイス固有の問題ではなく、正常に機能しているように見えることを付け加えておきます。

4

1 に答える 1

6

2番目のアクティビティに別のアフィニティを設定して修正しました。問題は、FLAG_ACTIVITY_NEW_TASK フラグに関するドキュメントに次のように記載されていることです。

設定されている場合、このアクティビティは、この履歴スタックの新しいタスクの開始になります

フレームワークが常に新しいタスクを作成するように聞こえるため、これは誤解を招く可能性があります。これは、サービスからアクティビティが開始された場合には当てはまりません。

これは、アクティビティの taskaffinity 属性に関するドキュメントです。

android:taskAffinity アクティビティがアフィニティを持つタスク。同じアフィニティを持つアクティビティは、概念的には同じタスク (ユーザーの観点からは同じ「アプリケーション」) に属します。タスクのアフィニティは、そのルート アクティビティのアフィニティによって決まります。アフィニティは、アクティビティの親が変更されるタスク (allowTaskReparenting 属性を参照) と、FLAG_ACTIVITY_NEW_TASK フラグで起動されたときにアクティビティを収容するタスクの 2 つを決定します。

したがって、アクティビティからstartActivityを呼び出すと新しいタスクが開始されますが、サービスから開始すると、フレームワークは同じアフィニティを持つタスクにアクティビティをアタッチします。単一のインスタンス

于 2012-04-25T09:32:37.850 に答える