私はこれをプロセスの少し遅い時間にやっています。インターネットへの接続が必要な画面/アクティビティがかなりありますが、Wi-Fiまたはネットワークが機能しているかどうかは関係ありません。接続を正常に検出できますが、すべてのアクティビティでこのチェックを実行する必要がありますか、またはアプリケーションでこれを行うグローバルな方法はありますか?
たくさんのコードを追加する前に聞いてみようと思いました。
私はこれをプロセスの少し遅い時間にやっています。インターネットへの接続が必要な画面/アクティビティがかなりありますが、Wi-Fiまたはネットワークが機能しているかどうかは関係ありません。接続を正常に検出できますが、すべてのアクティビティでこのチェックを実行する必要がありますか、またはアプリケーションでこれを行うグローバルな方法はありますか?
たくさんのコードを追加する前に聞いてみようと思いました。
Activity
のようなものでサブクラス化できInternetActivity
、その中でonResume
接続を確認できます。次に、アプリでインターネットを必要とするすべてのアクティビティは のサブクラスである必要があり、呼び出すか、まったくオーバーライドしないInternetActivity
ことで、自動的にチェックを行います。super.onResume()
onResume
public class CheckNetwork {
private static final String TAG = CheckNetwork.class.getSimpleName();
public static boolean isInternetAvailable(Context context)
{
NetworkInfo info = (NetworkInfo) ((ConnectivityManager)
context.getSystemService(Context.CONNECTIVITY_SERVICE)).getActiveNetworkInfo();
if (info == null)
{
Log.d(TAG,"no internet connection");
return false;
}
else
{
if(info.isConnected())
{
Log.d(TAG," internet connection available...");
return true;
}
else
{
Log.d(TAG," internet connection");
return true;
}
}
}
}
ネットワークを確認するには
あなたの活動で
if(CheckNetwork.isInternetAvailable(MainActivtiy.this)) //if connection available
{
}
インターネットパスを確認するたびに、アクティビティコンテキストは、利用可能な場合は true を返し、それ以外の場合は false を返します。
考えられるもう 1 つの興味深い解決策があります。BroadcastReceiver を使用することです。だから今、あなたは何度もチェックすることを計画しています。そうする代わりに、ネットワーク接続が変更されたときだけチェックし、それに応じてネットワーク モジュールに通知します。
IntentFilter filter = new IntentFilter(ConnectivityManager.CONNECTIVITY_ACTION);
registerReceiver(YOUR_RECEIVER, filter);
Tushar が上で答えたように、次のようなものからの継承は問題ありませんが、常にインターネット接続を必要とするサービスを使用していない限りInternetActivity
、チェックインしないでください。onResume
代わりに、ボタン クリックなどのイベントが発生して次のアクティビティに進むときにチェックします。そのため、別のアクティビティを開始することなく、トーストを表示してインターネット接続を確認できます。アクティビティ全体で継続的なインターネット接続が必要になることはめったにないため、インターネットを必要とするすべてのイベントに対してこれを行う必要があります。
このメソッドをそのスーパー クラスに追加できます。
private boolean isInternetConnected() {
ConnectivityManager cm = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
return cm.getActiveNetworkInfo() != null
&& cm.getActiveNetworkInfo().isConnectedOrConnecting();
}
それで:
if(isInternetConnected())
//to the internet thing
else
//display toast