ネットワーク接続ステータスの特定と監視

4433 ワード

リピート・アラートとバックグラウンド・サービスの最も一般的な用途の1つは、インターネット・リソースからのアプリケーション・データ、キャッシュ・データの定期的な更新または長時間実行のダウンロード・タスクの実行です.しかし、インターネットに接続していないか、接続が遅すぎてダウンロードが完了しない場合は、デバイスを起動して更新を手配する必要はありません.ConnectivityManagerを使用して、インターネットに接続されているかどうかを確認できます.接続されている場合は、現在の接続タイプも確認できます.
インターネットに接続されているかどうかを確認します
デバイスがインターネットに接続されていない場合は、インターネットリソースのスケジュールに基づいて更新する必要はありません.次のコード・セグメントは、ConnectivityManagerを使用して有効なネットワークを問合せ、ネットワークがインターネットに接続されているかどうかを判断する方法を示します.
ConnectivityManager cm =
        (ConnectivityManager)context.getSystemService(Context.CONNECTIVITY_SERVICE);
 
NetworkInfo activeNetwork = cm.getActiveNetworkInfo();
boolean isConnected = activeNetwork.isConnectedOrConnecting();

インターネット接続の種類を特定
また、現在使用可能なインターネット接続のタイプを特定することもできます.
モバイルデータ、WiMAX、Wi-Fi、イーサネット接続により、デバイス接続を提供します.有効なネットワークのタイプ(以下に示す)をクエリーして、使用可能な帯域幅に応じてリフレッシュ頻度を調整できます.
boolean isWiFi = activeNetwork.getType() == ConnectivityManager.TYPE_WIFI;

モバイルデータの料金はWi-Fiよりも高いことが多いため、多くの場合、モバイル接続を使用している場合は、アプリケーションの更新頻度を低減する必要があります.同様に、Wi-Fi接続がない場合は、大きなダウンロードタスクを一時停止する必要があります.
更新を無効にした後、インターネット接続が確立された後に更新を再開するために、接続状況の変化を必ず確認してください.
接続状況の変化を監視
接続の具体的な状況が変化すれば、ConnectivityManagerCONNECTIVITY_ACTION("android.net.conn.CONNECTIVITY_CHANGE")の操作をブロードキャストする.これらの変更をリスニングし、バックグラウンドの更新をリカバリ(または一時停止)するために、リストにブロードキャスト受信機を登録できます.
 android:name="android.net.conn.CONNECTIVITY_CHANGE"/>

モバイルデータとWi-Fiを切り替えると、このブロードキャストがトリガーされます.そのため、このブロードキャストは、更新またはダウンロードを一時停止した場合にのみ監視され、更新またはダウンロードを再開するのが適切です.通常、更新を開始する前にインターネット接続を確認するだけで、インターネットに接続していない場合は、接続が回復するまで後続の更新を一時停止します.