Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/performance/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 当internet连接重新打开时,自动发送失败的网络请求的最佳方式是什么?_Android_Performance - Fatal编程技术网

Android 当internet连接重新打开时,自动发送失败的网络请求的最佳方式是什么?

Android 当internet连接重新打开时,自动发送失败的网络请求的最佳方式是什么?,android,performance,Android,Performance,默认情况下,哪些库负责此场景?如果不使用库,实现此功能的最佳方法是什么?在数据库中维护一个SYNC\u标志。。。 如果网络连接已打开,则查找SYNC_标志为0的条目并重新发送。。 一旦获得成功,使用SYNC_标志将表更改为1。您可以使用服务检查您的internet连接何时恢复: public class NetWatcher extends BroadcastReceiver { @Override public void onReceive(Context context, Intent in

默认情况下,哪些库负责此场景?如果不使用库,实现此功能的最佳方法是什么?

在数据库中维护一个SYNC\u标志。。。 如果网络连接已打开,则查找SYNC_标志为0的条目并重新发送。。
一旦获得成功,使用SYNC_标志将表更改为1。

您可以使用服务检查您的internet连接何时恢复:

public class NetWatcher extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {

   ConnectivityManager cm = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
   NetworkInfo info = cm.getActiveNetworkInfo();

    if(intent.getAction().equals(WifiManager.NETWORK_STATE_CHANGED_ACTION)) {
        NetworkInfo networkInfo = intent.getParcelableExtra(WifiManager.EXTRA_NETWORK_INFO);
        if(networkInfo.isConnected()) {
             /* Internet is back on */
             /* Check if any requests need to be send */
        }
    }
}

此服务将检测您的Wifi连接何时可用。您应该进行检查,以了解您的请求是否由于internet连接而失败,然后在networkInfo.isConnected方法中再次执行请求。

根据我的观点,您可以在数据库中为特定记录维护某些状态。如果该记录上载成功,则将状态更改为1,如果您请求上载记录,并且由于任何原因失败,则状态相同0表示记录无法上载到服务器中,因此请稍后重试。是的,这当然是一个很好的竞争者,但它将重新发明轮子作为一个常见的用例。有没有图书馆已经在处理这个问题?我不这么认为。有很多库,但几乎都使用SyncAdapter。你能说出其中的几个吗?它是SyncIt,在Google中还有更多的搜索。你可以使用时间戳而不是标志来增强这一点。