我正在研究与 web 服务通信以接收数据并将它们存储到数据库中的 android 项目。
在发送操作之前,我验证了连接状态(见下面的代码)
if (XXX.getInstance(Context).isOnline(Context))
{
//TODO Sending operation
}
但是在此操作期间,如果设备处于脱机状态,尽管 HTTP 状态代码为 200 或 201,但我会丢失数据。
我在手术前管理,但不是在手术期间。
有没有办法解决这个问题?
我正在研究与 web 服务通信以接收数据并将它们存储到数据库中的 android 项目。
在发送操作之前,我验证了连接状态(见下面的代码)
if (XXX.getInstance(Context).isOnline(Context))
{
//TODO Sending operation
}
但是在此操作期间,如果设备处于脱机状态,尽管 HTTP 状态代码为 200 或 201,但我会丢失数据。
我在手术前管理,但不是在手术期间。
有没有办法解决这个问题?
使用广播接收器不断检查连接状态。
首先在您的onCreate()
方法中注册接收器:
registerReceiver(mReceiver, new IntentFilter(ConnectivityManager.CONNECTIVITY_ACTION));
然后写下当你想要的信号被发现时你想做的事情:
private BroadcastReceiver mReceiver = new BroadcastReceiver()
{
public void onReceive(Context context, Intent intent)
{
cm = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
netInfo = cm.getActiveNetworkInfo();
if (netInfo != null && netInfo.isConnected())
{
//You are still connected
}
else
{
//You have lost connection
}
}
};
onDestroy()
离开活动后(在)方法中,请确保取消注册接收器:
if (mReceiver != null)
{
unregisterReceiver(mReceiver);
}