0

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

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

4

3 回答 3

1

您可以使用 Android AlarmManager 系统。您可以安排一项服务继续尝试上传您的数据,以防您遇到超时(如 diva 所说)或第一次尝试中的任何其他 IO 问题。

请参考:https ://developer.android.com/training/scheduling/alarms.html了解更多关于警报的信息。

另一个有用的链接:

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

于 2014-11-06T14:27:40.223 回答
0

如果您超时并再次点击上传,如果延长此时间,这是值得的..

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"));
于 2013-10-11T19:53:21.663 回答
0

您可以尝试使用JobScheduler来安排您的上传任务。

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

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

AndroidTaskScheduling 文档

我希望这可以帮助你。

于 2016-09-21T09:09:20.173 回答