Android,如何在轮询数据时处理网络变化(从GPRS到Wi-fi,反之亦然)

前端之家收集整理的这篇文章主要介绍了Android,如何在轮询数据时处理网络变化(从GPRS到Wi-fi,反之亦然)前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
@H_404_1@我使用 DefaultHttpClientHttpGet来从服务器轮询数据.现在,假设用户在Wi-Fi网络中并离开了房间.因此手机会自动开始使用3G网络.是否有任何此类更改的回调,以及我应该如何处理此类更改.我应该再次开始轮询还是操作系统会注意适当地进行更改

解决方法

您可以在清单中设置Receiver:
  1. <receiver
  2. android:name=".NetworkChangeReceiver"
  3. android:label="NetworkChangeReceiver">
  4. <intent-filter>
  5. <action android:name="android.net.conn.CONNECTIVITY_CHANGE" />
  6. <action android:name="android.net.wifi.WIFI_STATE_CHANGED" />
  7. </intent-filter>
  8. </receiver>

并使用以下内容实现Receiver:

  1. public class NetworkChangeReceiver extends BroadcastReceiver {
  2.  
  3. @Override
  4. public void onReceive(final Context context,final Intent intent) {
  5. final ConnectivityManager connMgr = (ConnectivityManager)
  6. context.getSystemService(Context.CONNECTIVITY_SERVICE);
  7.  
  8. final android.net.NetworkInfo wifi =
  9. connMgr.getNetworkInfo(ConnectivityManager.TYPE_WIFI);
  10.  
  11. final android.net.NetworkInfo mobile =
  12. connMgr.getNetworkInfo(ConnectivityManager.TYPE_MOBILE);
  13.  
  14. if (wifi.isAvailable()) {
  15. //Do something
  16. if (mobile.isAvailable()) {
  17. //Do something else
  18. }
  19. }
  20. }

如果您保持持久连接,它将会关闭,您必须重新建立连接.

如果您正在安排服务并且没有保持连接持久,那么您将不会遇到问题.

猜你在找的Android相关文章