コンテンツに移動

よくアクセスするページ

最近アクセスしたページ

navigation

接続状態の特定と監視

繰り返しアラームとバックグラウンド サービスの最も一般的な使用には、インターネット リソースからのアプリケーション データの定期的なアップデートのスケジュール、データのキャッシュ、または長時間にわたるダウンロードの実行があります。ただし、インターネットに接続されていない場合や接続が遅すぎてダウンロードを完了できない場合、端末を起動してアップデートをスケジュールする必要はありません。

ConnectivityManager を使用して、インターネットに実際に接続されているか、接続されている場合はどのようなタイプの接続かを確認できます。

インターネット接続されているかどうかを確認する

インターネットに接続されていない場合、インターネット リソースに基づいてアップデートをスケジュールする必要はありません。 次のスニペットは、ConnectivityManager を使用してアクティブなネットワークを照会し、それがインターネットに接続されているかどうかを特定する例を示しています。

ConnectivityManager cm =
        (ConnectivityManager)context.getSystemService(Context.CONNECTIVITY_SERVICE);

NetworkInfo activeNetwork = cm.getActiveNetworkInfo();
boolean isConnected = activeNetwork != null &&
                      activeNetwork.isConnectedOrConnecting();

インターネット接続のタイプを特定する

現在使用可能なインターネット接続のタイプを特定することもできます。

端末の接続は、モバイルデータ、WiMAX、Wi-Fi、およびイーサネット接続によって提供されます。次に示すように、アクティブなネットワークのタイプを照会することによって、使用可能な帯域幅に基づいてリフレッシュ レートを変更できます。

boolean isWiFi = activeNetwork.getType() == ConnectivityManager.TYPE_WIFI;

モバイルデータのコストは Wi-Fi よりも大幅に高い傾向にあるため、ほとんどの場合、モバイル接続ではアプリのアップデート レートを下げる必要があります。 同様に、大きいサイズのダウンロードは Wi-Fi 接続を使用できるようになるまで保留する必要があります。

アップデートを無効にした場合は、インターネット接続が確立されたらアップデートを再開するために、接続の変化をリッスンすることが重要です。

接続の変化を監視する

ConnectivityManager は、接続の詳細が変化すると CONNECTIVITY_ACTION"android.net.conn.CONNECTIVITY_CHANGE")アクションをブロードキャストします。ブロードキャスト レシーバーをマニフェストに登録してこれらの変化をリッスンし、変化に応じてバックグラウンド アップデートを再開(または保留)できます。

<action android:name="android.net.conn.CONNECTIVITY_CHANGE"/>

デバイスの接続は頻繁に変化する可能性があります。このブロードキャストは、モバイルデータと Wi-Fi が切り替わるたびにトリガーされます。 そのため、アップデートまたはダウンロードを以前に保留している場合にのみ、それらを再開するためにこのブロードキャストを監視することをお勧めします。通常はアップデートを開始する前にインターネット接続を確認するだけで十分であり、接続がない場合は接続が復旧するまでその後のアップデートを保留します。

この手法ではマニフェストで宣言したブロードキャスト レシーバーを切り替える必要があり、これについては次のレッスンで説明します。

このサイトでは、ユーザーが選択したサイトの言語と表示設定を保存する目的で Cookie を使用しています。

Android デベロッパー向けの最新情報やヒントを入手して、Google Play での成功を手に入れましょう。

* 必須

送信しました

WeChat で Google Developers をフォローする

このサイトをで表示しますか?

ページの表示言語としてを選択しましたが、このサイトの言語はに設定されています。

言語設定を変更してこのサイトをで表示しますか?言語設定を変更する場合は、各ページの下にある言語メニューを使用してください。

このクラスには、API レベル 以上が必要です。

API レベル が選択されているため、このドキュメントは非表示になっています。左のナビゲーションの上にあるセレクタを使って、ドキュメントの API レベルを変更できます。

アプリに必要な API レベルを指定する方法について、詳しくは異なるプラットフォーム バージョンのサポートをご覧ください。

Take a short survey?
Help us improve the Android developer experience. (April 2018 — Developer Survey)