3

「サービス」でオブジェクト「FragmentManager」を取得することは可能ですか?「サービス」の「アクティビティ」からオブジェクト「FragmentManager」を渡すことは可能ですか?

PS:公式にサポートされていない機能が含まれています。

4

1 に答える 1

9

「サービス」でオブジェクト「FragmentManager」を取得することはできますか?

いいえ、申し訳ありません。

「サービス」の「アクティビティ」からオブジェクト「FragmentManager」を渡すことは可能ですか。

それは非常に悪い考えです。

サービスで UI を更新したい場合は、UI がない可能性があることに注意してください。サービスの実行中であっても、ユーザーは [戻る] ボタンまたは [ホーム] ボタンを押して UI を終了できます。

また、異なる UIである可能性があることにも注意してください。たとえば、ユーザーがデバイスを縦向きから横向きに回転すると、アクティビティ (およびデフォルトではフラグメント) が破棄され、再作成されます。または、別のアクティビティを前面に表示する何かをユーザーがタップすると、そのアクティビティには独自のフラグメントとマネージャーが含まれます。

したがって、サービスで UI を更新するには、次のような分離された操作をサポートする通信パスを使用する必要があります。

  • 放送を送る
  • を使用してブロードキャストを送信しますLocalBroadcastManager
  • を介してコンテンツを更新しContentProvider、アクティビティを使用して、CursorLoaderまたはContentObserverデータの変更について通知を受ける
于 2012-10-18T16:08:43.760 に答える