我使用DefaultHttpClient和HttpGet从服务器轮询数据。现在,假设用户在 Wi-fi 网络中并离开房间。所以手机自动开始使用3G网络。是否有此类更改的回调,以及我应该如何处理此类更改。我应该重新开始轮询还是操作系统会注意适当地进行更改
问问题
10204 次
2 回答
17
您可以在清单中设置接收器:
<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
}
}
}
如果您保持持久连接,它将关闭,您必须重新建立它。
如果您正在安排服务并且没有保持连接持久,则不会有问题。
于 2011-03-16T18:21:31.173 回答
-3
我认为你不需要做任何事情,但你应该保证你的服务器的IP地址不是随机排列的,也就是说你应该有一个固定的IP地址。这就是我的回答;
于 2014-12-22T03:23:29.990 回答