我对开发Android应用程序是相对较新的。我有一个Android应用程序,可以从Internet下载几个资源,并继续生成这些请求。我想在没有互联网连接的情况下创建这样的下载请求的队列,并在恢复连接时将其开始。在这种情况下,连接性可能以移动数据以及WiFi
有几个部分:首先,检测您现在是否在线,如果您没有在线检测到何时在线并拥有实际的队列。p>队列本身可以使用SQLite数据库。您只需要存储足够的信息即可重建恢复时应的请求。
您可以在此处查看有关监视连接状态的文档。
基本上,如果您要针对的API小于24,则注册广播接收器以接收Connectivity_Activity广播。(否则,您可以"聆听" Connectivity_change)。一旦您找出要排队的请求,您的逻辑可能会如下:
- 将请求推到队列
- 检查是否有连接
- 如果是这样:开始处理队列。
- 否则:等待广播接收器通知您您再次具有连接性并开始处理处理的服务。
很抱歉有点含糊(我现在不是坐在IDE的前面),但希望大纲至少要半使用。
有许多流行的"作业队列"库,可允许您指定对网络可用的依赖性(以及各种重试策略)。例如:
https://github.com/yigit/android-priority-jobqueue
https://github.com/evernote/android-job
创建一个本地数据库,该数据库应具有HTTP请求详细信息,时间戳及其状态。每当您的应用程序启动HTTP请求时,将其存储在数据库中,并使用HTTP请求详细信息和时间戳其启动及其状态未完成。
当您的HTTP请求完成时,将其状态更改为完成,因此当您的HTTP请求生成某种异常或错误时,您不必做任何事情。
现在,您的应用程序应该具有连接性广播听众,因此当您的应用程序与Internet连接时,读取数据库并启动您的HTTP请求。