私のアプリでは、バックグラウンドで定期的に実行されるアクションを提供したいと思います。だから、IntentServiceを起動するAlarmManagerを使用します。ネットワーク接続が利用可能になるまでの遅延サービスアクション
難しいのは、このバックグラウンドアクションがインターネットに接続する必要があるということです。だから私は、デバイスがロックされているときに接続を強制していないようなWakeLockを使ってみました。
次に、サービスが開始され、すぐに登録を解除するときに、希望のブロードキャストが受信されるとすぐに、 "android.net.conn.CONNECTIVITY_CHANGE"を聞くためのBroadcastReceiverの登録について考えました。
public class BackgroundService extends IntentService {
private static final IntentFilter filter =
new IntentFilter(ConnectivityManager.CONNECTIVITY_ACTION);
private static NetworkStateChangedReceiver receiver =
new NetworkStateChangedReceiver();
protected void onHandleIntent(Intent intent) {
registerReceiver(receiver, filter);
}
}
私の質問は今ある:この受信機は破壊されることがある限り、何の関係もありませんように、とすぐにサービスが(停止したとして、何の接続が利用できないよう
私のコードは次のようになります)? したがって、ネットワーク接続が利用可能になるまで、その作業を遅らせるサービスをどのように実現できますか?
ありがとうございました。
私ができることは最高ですが、接続が確立されるまで何度も何度もタスクを開始していますか? –
@ cypressious:これが一つのアプローチです。私は2つの輪郭を描いたが、そのうちの1つはその説明に合わない。 – CommonsWare
私は参照してください。あなたの2番目の提案は、永続的なBroadcastReceiverを登録することです。私の場合、タスクは1日に1〜2回実行されます。それは95%を無視して、5分ごとに放送を処理するのは悪いスタイルではないですか? –