我正在创建一个排队上传管理器。有了这个对我之前问题指南的回答,我将使用服务来上传这些图像。建议我使用数据库来跟踪成功上传的文件和待处理的文件。
我最初的研究让我相信我想要创建一个绑定服务,这样我可以在照片上传后更新我的 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( . . . );
}
}
这是解决这个问题的正确方法吗?我再次尝试规避在几乎没有蜂窝信号时让多个 Activity 实例请求上传照片的问题。我刚刚读完服务和绑定服务文档,感觉很好,但不是很好。