我正在制作应用程序而且我遇到了一些问题,我想问一下我的解决方案是否合适。
所以基本上我使用Service
,我从Intent
开始使用MainActivity
。 Service
中有一个无限循环,其中有一个Thread
。 Sleep(60000)
因此它只尝试每60秒更新一次。 Service
向我的JSON包装器PHP脚本发出HTTP请求,然后从我的远程MySQL数据库返回数据,然后Service
解析数据,之后它与ContentProvider
进行通信,使用其bulkInsert()
替换而不是插入,以便在需要将新数据存储在本地SQLiteDatabase
时替换旧行。我还想知道除了JSON数据之外我还要得到一个有效id的列表,所以它知道删除主db中不再存在的行,我也发送了上次更新的时间,所以我只返回返回的新行而不是整个数据库。关键是要在远程服务器上安装一个主数据库,并将多个设备同步到它。
接下来我需要Activities
能够使用使用ContentProvider
的加载器从本地数据库查询信息。
现在我想知道更新数据库并同时查询它是否存在问题。 ContentProvider
会照顾到吗?
此外,我还需要同步一个图片文件夹,我该怎么做呢?
我应该注意哪些同步问题?
是否有更好的方法来实现我想要的目标?
答案 0 :(得分:1)
我可以告诉你,Service
内的无限循环是一个非常糟糕的主意。尤其是Sleep(60000)
。为什么不使用IntentService
和AlarmManager
? IntentService
会在后台工作线程中自动处理所有Intents
,因此您不必处理此问题,AlarmManager
基本上只是一个计时器,您可以使用它来调用每60秒服务一次。这对于执行更新来说是一个更好的解决方案。
根据您的其他问题:ContentProvider
已经为您处理了很多事情。您不必担心并发请求或类似的事情。我无法真正告诉您有关文件夹同步的更多信息,请尝试更具体。到目前为止,您有哪些具体问题让您担忧?