0

我正在研究与 web 服务通信以接收数据并将它们存储到数据库中的 android 项目。

在发送操作之前,我验证了连接状态(见下面的代码)

if (XXX.getInstance(Context).isOnline(Context)) 
{
//TODO Sending operation
}

但是在此操作期间,如果设备处于脱机状态,尽管 HTTP 状态代码为 200 或 201,但我会丢失数据。

我在手术前管理,但不是在手术期间。

有没有办法解决这个问题?

4

1 回答 1

1

使用广播接收器不断检查连接状态。

首先在您的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);
}
于 2013-04-02T09:33:30.333 回答