我正在创建排队的上传管理器。通过this回答我之前问题的指导,我将使用服务来上传这些图片。建议我使用数据库来跟踪成功上传的文件和待处理文件。在活动和服务之间共享数据库
我最初的研究让我相信我会创建一个绑定服务,所以一旦照片上传,我就可以更新我的UI,以及一个已启动的服务,因此它可以独立于我的活动运行创造它。看来我还需要通过应用程序清单中的process=":something"
指令在自己的过程中启动它。
我的问题是,在N个活动客户端和上传服务器之间共享SQLite(除非有更好的方式)数据库的最佳方式是什么?
我想象它的工作就是这样,在伪代码:
// in an app
writeRecordToDb(. . .);
// start service
if(service doesn't exist)
{
// start service, and bind
}
// in the service:
if(shared db has another row)
{
doDownload(. . .);
if(download worked)
{
notifyActivity();
if(db has another row)
doDownload(. . .);
}
else
{
retryDownload(. . .);
}
}
这是正确的方式去吗?我再次试图绕过有多个活动实例请求照片上传的问题,而这些问题几乎不存在任何蜂窝信号。我刚刚阅读了服务和绑定服务文档,我感觉很好,但并不好。
除了已发布的答案之外,我从您提到的问题中看出,排队机制中的一个决定性因素是网络连接性。我使用'BroadcastReceiver'来监听连接的变化,并将它与'IntentService'耦合。我的'活动'发送网络请求到'IntentService',如果没有连接,它将请求添加到队列并终止。每当'BroadcastReceiver'接收到一个网络'connected''Intent',它就会启动IntentService,然后处理之前排队的任何东西。 – Squonk 2012-07-05 21:47:54