0

サーバー上のビデオと同期するアプリケーションに取り組んでいます。プレイリストをダウンロードしてデータベースに挿入し、実際のビデオ ファイルを SD カードにダウンロードする IntentService を開始します。

サービスを開始するときにインテントを介して渡されたメッセンジャーを使用して、既にダウンロードされている割合を伝えています。

私は働いていますが、明らかに活動が破壊されて再び始まると、メッセンジャーは再接続しません.

この問題の解決策は何でしょうか。私を正しい方向に導いてください。ありがとう

4

1 に答える 1

1

メッセンジャーを使用する場合は、インテント サービスに渡したメッセンジャーで作成されたハンドラーへの参照を保持する必要があります。

アクティビティが破棄されて再作成された場合、そのハンドラーは以前のアクティビティにまだバインドされています (これにより、リークが発生する可能性もあります)。

1 つの方法は、シングルトン オブジェクトまたはアプリケーション オブジェクト内でそのハンドラーへの参照を持つことです。

ただし、インテント サービスの非同期の性質のため、ブロードキャストを通じて進行状況を通知することになるため、新しいアクティビティがインテント サービスによってスローされた同じブロードキャストに登録される可能性があります。サービスがまだ生きているのか、それとも仕事を終えたのかはわかりません。

localbroadcastsを使用すると、より効率的なソリューションが得られる場合があります。

于 2013-03-10T18:54:28.923 に答える