我正在使用Web服务,我成功地从Server检索数据。当设备连接到网络时,一切正常。
如果在调用Web服务时网络不可用,则必须处于暂挂状态。一旦网络连接,我就必须调用这些待处理的Web服务。
我觉得一种解决方案是使用广播接收器来了解网络状态。但是如何在特定时间调用Web服务?
还有其他建议吗?
答案 0 :(得分:0)
您可以使用BroadcastReceiver启动Web服务。
在清单中添加接收器。
<receiver
android:name="com.example.appname.ConnectivityBroadcastReceiver"
android:label="ConnectivityBroadcastReceiver" >
<intent-filter>
<action android:name="android.net.conn.CONNECTIVITY_CHANGE" />
</intent-filter>
</receiver>
然后创建扩展BroadcastReceiver的ConnectivityBroadcastReceiver类。
public class ConnectivityBroadcastReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
// check here if you are connected
// if you are start your web services
}
}
答案 1 :(得分:0)
首先检查网络连接。如果已连接,则执行httpclient请求。如果未连接,请在连接时执行。下面的课程将在连接时通知您。
public class ConnectionChangeListener extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
NetworkInfo info = ((ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE)).getActiveNetworkInfo();
if (info != null && info.isConnected() && info.isAvailable()) {
Log.i("NetworkInfo","connected");
} else {
Log.i("NetworkInfo","not connected");
}
}
}