Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/365.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
Java 如何在Android中重试上传到服务器_Java_Android_Networking_Timer - Fatal编程技术网

Java 如何在Android中重试上传到服务器

Java 如何在Android中重试上传到服务器,java,android,networking,timer,Java,Android,Networking,Timer,我有一个应用程序,通过广播接收器接收文本消息。它尝试将它们上载到服务器,如果失败,则必须重试 我想知道哪种方法是重试上传的好方法。我是否应该使用某种触发事件的计时器(如BroadcastReceiver)每隔一段时间重试发送消息一次(如何?)或其他什么 这是值得的,如果你得到超时,并点击上传再次如果延长 这次暂停 您可以使用Android AlarmManager系统。你可以安排一个服务来继续尝试上传你的数据,以防你超时,就像d.i.v.a所说的,或者在第一次尝试时遇到任何其他IO问题 请参阅:

我有一个应用程序,通过广播接收器接收文本消息。它尝试将它们上载到服务器,如果失败,则必须重试

我想知道哪种方法是重试上传的好方法。我是否应该使用某种触发事件的计时器(如BroadcastReceiver)每隔一段时间重试发送消息一次(如何?)或其他什么

这是值得的,如果你得到超时,并点击上传再次如果延长 这次暂停


您可以使用Android AlarmManager系统。你可以安排一个服务来继续尝试上传你的数据,以防你超时,就像d.i.v.a所说的,或者在第一次尝试时遇到任何其他IO问题

请参阅:了解有关警报的更多信息

另一个有用的链接:


如果出于某种原因不想使用系统警报,还可以尝试在“重试循环”中使用Thread.sleep(),假设您正在使用服务、AsyncTask等(不要在主线程中调用Thread.sleep!)

您可以尝试使用JobScheduler来安排上载任务

如果任务失败,只需调用jobFinished(mJobParam,needsReschedule),您的任务将被重新调度

如果要在任务失败时将重试策略或重试间隔设置为等待,可以设置setBackoffCriteria(长initialBackoffMillis,int backoffPolicy)


我希望这能对您有所帮助。

有任何logcat错误吗?请在此发帖,你是什么意思?我在想一般的错误。例如,如果手机没有互联网连接,它必须稍后再试。你在说什么?我想在一定时间后重试将邮件发送到服务器。我是说在此超时后重试。。而不是像你说的那样设置计时器并重试
DefaultHttpClient h;
// ...
Log.d(TAG, "http.socket.timeout: " +
      h.getParams().getParameter("http.socket.timeout"));
Log.d(TAG, "http.connection.timeout: "
      + h.getParams().getParameter("http.connection.timeout"));