如何在android中连接网络时调用挂起的Web服务?

时间:2014-03-11 12:54:36

标签: android web-services

我正在使用Web服务,我成功地从Server检索数据。当设备连接到网络时,一切正常。

如果在调用Web服务时网络不可用,则必须处于暂挂状态。一旦网络连接,我就必须调用这些待处理的Web服务。

我觉得一种解决方案是使用广播接收器来了解网络状态。但是如何在特定时间调用Web服务?

还有其他建议吗?

2 个答案:

答案 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");

        }
    }
}