Android起動サービス傍受ネットワーク状態


マルチスレッドダウンロードをしているときや、h 5インタフェースをロードしているときに、ネットワークの状態が悪くなったり、ネットワークが切れたりすることがよくあります.これは、アプリケーションの起動が終了していないときや、ネットワークの状態をリスニングして判断する必要があります.
この場合,我々は一般的に2つの方法で処理する.
第一:サービスを開始する.
第二に、放送の形式を送信する.
方法2を採用することを提案する.
 @Override
 protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.activity_main);
  IntentFilter intentFilter = new IntentFilter();
  intentFilter.addAction(ConnectivityManager.CONNECTIVITY_ACTION);
  registerReceiver(connectionReceiver, intentFilter);

 }

 @Override
 public boolean onCreateOptionsMenu(Menu menu) {
  // Inflate the menu; this adds items to the action bar if it is present.
  getMenuInflater().inflate(R.menu.main, menu);
  return true;
 }
 public boolean isNetworkConnected(Context context) {
  if (context != null) {
   ConnectivityManager mConnectivityManager = (ConnectivityManager) context
     .getSystemService(Context.CONNECTIVITY_SERVICE);
   NetworkInfo mNetworkInfo = mConnectivityManager.getActiveNetworkInfo();
   if (mNetworkInfo != null) {
    return mNetworkInfo.isAvailable();
   }
  }
  return false;
 }
 public boolean isWifiConnected(Context context) {
  if (context != null) {
   ConnectivityManager mConnectivityManager = (ConnectivityManager) context
     .getSystemService(Context.CONNECTIVITY_SERVICE);
   NetworkInfo mWiFiNetworkInfo = mConnectivityManager
     .getNetworkInfo(ConnectivityManager.TYPE_WIFI);
   if (mWiFiNetworkInfo != null) {
    return mWiFiNetworkInfo.isAvailable();
   }
  }
  return false;
 }
 public boolean isMobileConnected(Context context) {
  if (context != null) {
   ConnectivityManager mConnectivityManager = (ConnectivityManager) context
     .getSystemService(Context.CONNECTIVITY_SERVICE);
   NetworkInfo mMobileNetworkInfo = mConnectivityManager
     .getNetworkInfo(ConnectivityManager.TYPE_MOBILE);
   if (mMobileNetworkInfo != null) {
    return mMobileNetworkInfo.isAvailable();
   }
  }
  return false;
 }

 public static int getConnectedType(Context context) {
  if (context != null) {
   ConnectivityManager mConnectivityManager = (ConnectivityManager) context
     .getSystemService(Context.CONNECTIVITY_SERVICE);
   NetworkInfo mNetworkInfo = mConnectivityManager.getActiveNetworkInfo();
   if (mNetworkInfo != null && mNetworkInfo.isAvailable()) {
    return mNetworkInfo.getType();
   }
  }
  return -1;
 }
 BroadcastReceiver	connectionReceiver = new BroadcastReceiver() {
  @Override
  public void onReceive(Context context, Intent intent) {
   ConnectivityManager connectMgr = (ConnectivityManager) getSystemService(CONNECTIVITY_SERVICE);
   NetworkInfo mobNetInfo = connectMgr.getNetworkInfo(ConnectivityManager.TYPE_MOBILE);
   NetworkInfo wifiNetInfo = connectMgr.getNetworkInfo(ConnectivityManager.TYPE_WIFI);
   if (!mobNetInfo.isConnected() && !wifiNetInfo.isConnected()) {
    Log.i(TAG, "unconnect");
    // unconnect network
   }else {
    // connect network
   }
  }
 };
 /*@Override
 protected void onDestroy() {

 };*/

 @Override
 protected void onDestroy() {
  if (connectionReceiver != null) {
   unregisterReceiver(connectionReceiver);
  }


  super.onDestroy();
 }

ブロードキャスト:ソースコードは次のとおりです.
/**
	 *       
	 */
	BroadcastReceiver	connectionReceiver = new BroadcastReceiver() {
		@Override
		public void onReceive(Context context, Intent intent) {
			ConnectivityManager connectMgr = (ConnectivityManager) getSystemService(CONNECTIVITY_SERVICE);
			NetworkInfo mobNetInfo = connectMgr.getNetworkInfo(ConnectivityManager.TYPE_MOBILE);
			NetworkInfo wifiNetInfo = connectMgr.getNetworkInfo(ConnectivityManager.TYPE_WIFI);
			if (!mobNetInfo.isConnected() && !wifiNetInfo.isConnected()) {
				Log.i("yuyahao", "   ");
				Message msg = new Message();
				msg.what = DownLoadFileUtil.isNetConnectionError;
				mHandler.sendMessage(msg);
				// unconnect network
			}else {
				// connect network
				Log.i(TAG, "    ");
			}
		}
	};

登録:
//   	            
			IntentFilter intentFilter = new IntentFilter();
			intentFilter.addAction(ConnectivityManager.CONNECTIVITY_ACTION);
			registerReceiver(connectionReceiver, intentFilter);
			showDialog();
			pool.execute(mUpdateUIThread);
の完全なコードは次のとおりです.
方法1はサービスを開く方法です.コードは簡単です.
demoダウンロードアドレスは以下の通りです.
ネットワークの状態を監視するjar