0

ネットワークからデータを取得するために、(起動から) 5 時間ごとにインテント サービスを効果的に開始するアプリがあります。

私が達成したいのは、(フェッチ時に)ネットワーク接続がない場合、ブロードキャストにサブスクライブして、ネットワークが利用可能になったときにリッスンし、データを再度フェッチすることです。

これを達成するための最良のアプローチ/テクニックは何ですか?

また、この方法でデータを正常に取得した後、(ネットワーク接続ブロードキャストの) サブスクリプションをキャンセルし、元のサービス スケジュールをリセットして、5 時間後に再度チェックするようにしたいと思うでしょう。

4

2 に答える 2

0

(SharedPreferences) http://developer.android.com/guide/topics/data/data-storage.html#pref を使用して文字列を 5 時間格納し、文字列を真偽 (0/1) で検証し、文字列検証をチェックするよりも5 時間ごとに true または false であり、変更は 4.59 時間ごとに検証されます。

于 2013-05-30T10:13:33.380 に答える
0

最後に、私がしたことは、マニフェスト(私のインテントサービスをキックする)を介してブロードキャストレシーバーがandroid.net.conn.CONNECTIVITY_CHANGEをリッスンできるようにすることでした。つまり、これにより、ネットワークの変化をリッスンできるようになりました。

私のインテント サービスでは、ネットワーク接続が原因でデータの取得に失敗した場合、「waiting_for_connection」という共有設定にフラグを設定します。

ネットワークが変更された場合、「waiting_for_connection」フラグをチェックし、設定されている場合。false の場合はそのまま戻ります。それ以外の場合は、ネットワークがある場合にのみデータを取得します。成功したら、フラグをリセットします。

于 2013-05-31T11:05:01.203 に答える