如何保持HTTP请求待处理,直到恢复Android应用程序中的Internet连接



我对开发Android应用程序是相对较新的。我有一个Android应用程序,可以从Internet下载几个资源,并继续生成这些请求。我想在没有互联网连接的情况下创建这样的下载请求的队列,并在恢复连接时将其开始。在这种情况下,连接性可能以移动数据以及WiFi

的形式为单位。

有几个部分:首先,检测您现在是否在线,如果您没有在线检测到何时在线并拥有实际的队列。p>队列本身可以使用SQLite数据库。您只需要存储足够的信息即可重建恢复时应的请求。

您可以在此处查看有关监视连接状态的文档。

基本上,如果您要针对的API小于24,则注册广播接收器以接收Connectivity_Activity广播。(否则,您可以"聆听" Connectivity_change)。一旦您找出要排队的请求,您的逻辑可能会如下:

  1. 将请求推到队列
  2. 检查是否有连接
  3. 如果是这样:开始处理队列。
  4. 否则:等待广播接收器通知您您再次具有连接性并开始处理处理的服务。

很抱歉有点含糊(我现在不是坐在IDE的前面),但希望大纲至少要半使用。

有许多流行的"作业队列"库,可允许您指定对网络可用的依赖性(以及各种重试策略)。例如:

https://github.com/yigit/android-priority-jobqueue

https://github.com/evernote/android-job

创建一个本地数据库,该数据库应具有HTTP请求详细信息,时间戳及其状态。每当您的应用程序启动HTTP请求时,将其存储在数据库中,并使用HTTP请求详细信息和时间戳其启动及其状态未完成。

当您的HTTP请求完成时,将其状态更改为完成,因此当您的HTTP请求生成某种异常或错误时,您不必做任何事情。

现在,您的应用程序应该具有连接性广播听众,因此当您的应用程序与Internet连接时,读取数据库并启动您的HTTP请求。

最新更新