定期的なアラームとIntentServiceを使用してウェブサイトから定期的にデータを取得するアプリを構築しています。更新を実行する前に、ConnectivityManagerを使用してネットワーク接続を確認します。
ConnectivityManagerがアクティブなネットワークがないことを報告した場合、ネットワークがアクティブになったときに更新を再試行したいと思います。ConnectivityManager.CONNECTIVITY_ACTIONをリッスンしているBroadcastReceiverを使用するのがこれを行うための最良の方法のようですが、このレシーバーを登録/登録解除する適切な方法は何でしょうか。
IntentServiceでネットワークチェックが失敗した場合、BroadcastReceiverをApplicationContextに登録して、サービスの停止時に登録が解除されないようにすることができると思います。次に、受信者が起動したときに、受信者を独自のonReceiveメソッドで登録解除できますか?私は基地から離れていますか?
いくつかの疑似コード例:
MyIntentService:
if ( !isNetworkConnected() )
getApplicationContext().registerReceiver( new MyBroadcastReceiver(), new IntentFilter( ConnectivityManager.CONNECTIVITY_ACTION );
MyBroadcastReceiver:
public void onReceive( Context context, Intent intent ) {
context.getApplicationContext().unregisterReceiver( this );