4

私はインターネットベースのアプリに取り組んでいるので、インターネット接続を監視する必要があります。リンク

mainActivity の作成時にこのコードを使用して、インターネット接続が正常に機能することを確認しました。

public boolean isOnline() 
{  
ConnectivityManager cm = (ConnectivityManager) 
getSystemService(Context.CONNECTIVITY_SERVICE);  return 
cm.getActiveNetworkInfo().isConnectedOrConnecting();
}

しかし、この監視はアプリケーション全体で行う必要があります。これをどこで使用すればよいですか?AsyncTask が必要ですか?

4

2 に答える 2

6

接続状態の変化を検出する BroadcastReceiver を作成します。ここでエリックの答えを見てください

于 2011-11-11T03:08:17.000 に答える
4

次のようにブロードキャスト レシーバーを使用します。

private BroadcastReceiver mConnReceiver = new BroadcastReceiver() {
        @Override
        public void onReceive(Context context, Intent intent) {
            boolean noConnectivity = intent.getBooleanExtra(ConnectivityManager.EXTRA_NO_CONNECTIVITY, false);
            String reason = intent.getStringExtra(ConnectivityManager.EXTRA_REASON);
                        boolean isFailover = intent.getBooleanExtra(ConnectivityManager.EXTRA_IS_FAILOVER, false);

            NetworkInfo currentNetworkInfo = (NetworkInfo) intent.getParcelableExtra(ConnectivityManager.EXTRA_NETWORK_INFO);
            NetworkInfo otherNetworkInfo = (NetworkInfo) intent.getParcelableExtra(ConnectivityManager.EXTRA_OTHER_NETWORK_INFO);

            // do application-specific task(s) based on the current network state, such 
            // as enabling queuing of HTTP requests when currentNetworkInfo is connected etc.
        }
    };

 private void registerReceivers() {    
       registerReceiver(mConnReceiver, 
           new IntentFilter(ConnectivityManager.CONNECTIVITY_ACTION));
   }
于 2011-11-11T03:09:24.453 に答える