我使用
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 } } }
如果您保持持久连接,它将会关闭,您必须重新建立连接.
如果您正在安排服务并且没有保持连接持久,那么您将不会遇到问题.