質問

Webサーバーに作成する必要があるWebサービスコールをキュートするIntentserviceがあります。したがって、それぞれの意図は、行われるWebサービスコールです。

私のアプリケーションが特定のデータを含む意図があるかどうかを私のアプリケーションに尋ねることができる場所を設定したいと思います(つまり、「あなたはすでにxデータをクラウドに尋ねるのを待っていますか?やれ?")。

これを行うためにIntentserviceをどのように拡張するかについての提案はありますか? Intentserviceの意図キューを通過できますか?または、Intentserviceコードを取得して変更する必要がありますか?

私が持っている他の唯一のアイデアは、キューに通話される呼び出しがデータベースとログにテーブルを追加することであり、各ログが完了するとテーブルから削除されます。

役に立ちましたか?

解決

これを行うためにIntentserviceをどのように拡張するかについての提案はありますか? Intentserviceの意図キューを通過できますか?または、Intentserviceコードを取得して変更する必要がありますか?

実際のキューを本当に調べたい場合は、おそらく後者です。 IntentService 回転します Intents aのメッセージキューに表示されたメッセージに Looper を経由します HandlerThread. 。ただし、SDKを介して公開されていません。幸運、 IntentService かなり短いです - 150行でさえありません。独自のパッケージにクローンして、必要に応じて変更を加えることができます。 AOSPリポジトリで新しいソースの更新がリリースされたときにソースでDIFFを実行するだけなので、Googleが大手術を行ったかどうかがわかります IntentService あなたが利用したいかもしれないそれ自体。

私が持っている他の唯一のアイデアは、キューに通話される呼び出しがデータベースとログにテーブルを追加することであり、各ログが完了するとテーブルから削除されます。

そのように持続する必要さえありません。 IntentService独自のキューは永続的ではありません。独自のFIFOキューを維持するだけです onStartCommand(), 、スーパークラスに接続し、あなたをポップします Intent 終了時にキューから外れます onHandleIntent(). 。これはマスターキューと同期しなくなる可能性があります(たとえば、使用することをお勧めします finally 自分のキューから作業をポップするようにしますが、クラスをクローンする必要はありません。

他のヒント

別の解決策は、StartCommandをオーバーライドすることでそれを解決することです。

ここ 同様の問題のインスピレーションを見つけたスムーズな解決策です:)

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top