Skip to content

Most visited

Recently visited

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

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

This site uses cookies to store your preferences for site-specific language and display options.

Get the latest Android developer news and tips that will help you find success on Google Play.

* Required Fields

Hooray!

WeChat で Google Developers をフォローする

Browse this site in ?

You requested a page in , but your language preference for this site is .

Would you like to change your language preference and browse this site in ? If you want to change your language preference later, use the language menu at the bottom of each page.

This class requires API level or higher

This doc is hidden because your selected API level for the documentation is . You can change the documentation API level with the selector above the left navigation.

For more information about specifying the API level your app requires, read Supporting Different Platform Versions.

Take a short survey?
Help us improve the Android developer experience. (Dec 2017 Android Platform & Tools Survey)