@H_404_1@我使用
DefaultHttpClient和
HttpGet来从服务器轮询数据.现在,假设用户在Wi-Fi网络中并离开了房间.因此手机会自动开始使用3G网络.是否有任何此类更改的回调,以及我应该如何处理此类更改.我应该再次开始轮询还是操作系统会注意适当地进行更改
解决方法
您可以在清单中设置Receiver:
- <receiver
- android:name=".NetworkChangeReceiver"
- android:label="NetworkChangeReceiver">
- <intent-filter>
- <action android:name="android.net.conn.CONNECTIVITY_CHANGE" />
- <action android:name="android.net.wifi.WIFI_STATE_CHANGED" />
- </intent-filter>
- </receiver>
并使用以下内容实现Receiver:
- public class NetworkChangeReceiver extends BroadcastReceiver {
- @Override
- public void onReceive(final Context context,final Intent intent) {
- final ConnectivityManager connMgr = (ConnectivityManager)
- context.getSystemService(Context.CONNECTIVITY_SERVICE);
- final android.net.NetworkInfo wifi =
- connMgr.getNetworkInfo(ConnectivityManager.TYPE_WIFI);
- final android.net.NetworkInfo mobile =
- connMgr.getNetworkInfo(ConnectivityManager.TYPE_MOBILE);
- if (wifi.isAvailable()) {
- //Do something
- if (mobile.isAvailable()) {
- //Do something else
- }
- }
- }
如果您保持持久连接,它将会关闭,您必须重新建立连接.
如果您正在安排服务并且没有保持连接持久,那么您将不会遇到问题.