执行上传的后台服务
Background service to perform uploads
我目前有一个应用程序可以将图像上传到服务器。为了上传这些图像,我使用了一个工作正常的 AsyncTask。它上传图像,显示它的通知以及进度。对于多个图像,创建单独的异步任务。但我还需要更多:
- 我不想创建多个 AsyncTasks,而是想在同一线程上对上传进行排队。
我认为后台服务是我所需要的。我的问题是我可以使用服务来完成这些任务:
- 当上传 Activity 打开时,它会检查服务是否 运行。如果服务是 运行,它会更新 UI 以显示当前正在上传的图像。 (我为上传维护了一个 SQLite 数据库,所以如果我可以检测到服务是 运行,我可以从 table 中提取结果以查看哪些文件在队列中)。
- 上传Activity 包含一个显示尚未上传的文件的 RecyclerView。触摸一个项目还应该检查服务是否为 运行。如果服务不是 运行,它应该启动服务,并将触摸的项目排队等待上传。如果服务是 运行,那么它只是将文件排队等待上传。
- 上传Activity 应该不断从服务接收更新,因此用户可以看到上传进度(这将显示在通知面板中,但我需要进度和其他详细信息也显示在 Activity 中。
我的主要障碍是检测服务是否 运行。此外,是否可以让服务知道我已将另一个文件添加到队列中(将文件添加到队列只是 SQL 插入 table。服务应将新文件附加到一旦 activity 表示已添加文件,请排队)
编辑:
这是我试图实现的伪代码:
Service service = new Service();
If service.isRunning{
service.itemAddedToQueueAndUpdateNotification()
}else{
service.start()
}
还有一些回调,比如
onServiceUpdateRecieved(){
//Update UI
}
您可以使用 Intent 来广播新的时间表(由 activity 发送,由服务接收)或实际上传结果(由服务发送,由 [=13= 接收) =], 如果激活)
我建议使用执行程序服务并不断添加图像以上传到其队列。每个上传任务都会一个接一个地派发。它将更易于管理,您甚至可以为任务完成添加回调并在需要时更新 UI。
我目前有一个应用程序可以将图像上传到服务器。为了上传这些图像,我使用了一个工作正常的 AsyncTask。它上传图像,显示它的通知以及进度。对于多个图像,创建单独的异步任务。但我还需要更多:
- 我不想创建多个 AsyncTasks,而是想在同一线程上对上传进行排队。
我认为后台服务是我所需要的。我的问题是我可以使用服务来完成这些任务:
- 当上传 Activity 打开时,它会检查服务是否 运行。如果服务是 运行,它会更新 UI 以显示当前正在上传的图像。 (我为上传维护了一个 SQLite 数据库,所以如果我可以检测到服务是 运行,我可以从 table 中提取结果以查看哪些文件在队列中)。
- 上传Activity 包含一个显示尚未上传的文件的 RecyclerView。触摸一个项目还应该检查服务是否为 运行。如果服务不是 运行,它应该启动服务,并将触摸的项目排队等待上传。如果服务是 运行,那么它只是将文件排队等待上传。
- 上传Activity 应该不断从服务接收更新,因此用户可以看到上传进度(这将显示在通知面板中,但我需要进度和其他详细信息也显示在 Activity 中。
我的主要障碍是检测服务是否 运行。此外,是否可以让服务知道我已将另一个文件添加到队列中(将文件添加到队列只是 SQL 插入 table。服务应将新文件附加到一旦 activity 表示已添加文件,请排队)
编辑:
这是我试图实现的伪代码:
Service service = new Service();
If service.isRunning{
service.itemAddedToQueueAndUpdateNotification()
}else{
service.start()
}
还有一些回调,比如
onServiceUpdateRecieved(){
//Update UI
}
您可以使用 Intent 来广播新的时间表(由 activity 发送,由服务接收)或实际上传结果(由服务发送,由 [=13= 接收) =], 如果激活)
我建议使用执行程序服务并不断添加图像以上传到其队列。每个上传任务都会一个接一个地派发。它将更易于管理,您甚至可以为任务完成添加回调并在需要时更新 UI。