【问题标题】:Some synchronization questions一些同步问题
【发布时间】:2014-06-20 19:49:57
【问题描述】:

我正在制作一个应用程序,我有一些问题想问一下我的解决方案是否好。

所以基本上我使用Service,我从MainActivity 开始使用IntentService 有一个无限循环,其中有一个ThreadSleep(60000) 所以它只尝试每 60 秒更新一次。 Service 向我的 JSON 包装 PHP 脚本发出 HTTP 请求,然后它从我的远程 MySQL 数据库返回数据,然后 Service 解析数据,之后它与 ContentProvider 通信并使用其 bulkInsert()替换而不是插入,以便在需要将新数据存储在本地 SQLiteDatabase 时替换旧行。我认为除了 JSON 数据之外,我还必须获取有效 id 的列表,以便它知道删除主数据库中不再存在的行,我还发送了上次更新的时间,所以我只得到返回的新行而不是整个数据库。重点是在远程服务器上拥有一个主数据库,并有多个设备与之同步。

所以接下来我需要Activities 才能使用使用ContentProvider 的加载器从本地数据库中查询信息。

现在我想知道更新数据库并同时查询它是否会出现问题。 ContentProvider 会解决这个问题吗? 另外我还需要同步一个图片文件夹,我该怎么做呢? 是否有任何我应该注意的同步问题? 有没有更好的方法来实现我想要的?

【问题讨论】:

  • 这听起来像是一次有很多问题,请尝试缩小您的问题范围或提出多个问题。
  • 嗯,这听起来可能有很多问题,但主要方面是同步。如何将本地 SQLiteDatabase 与远程 MySQL 同步?

标签: android mysql json sqlite


【解决方案1】:

我可以告诉你Service 内的无限循环是一个非常糟糕的主意。尤其是Sleep(60000)。为什么不使用IntentServiceAlarmManagerIntentService 会在后台工作线程中自动处理所有 Intents,因此您无需处理这些问题,AlarmManager 基本上只是一个计时器,您可以使用它每 60 秒调用一次服务。这将是执行更新的更好解决方案。

根据您的其他问题:ContentProvider 已经为您处理了很多事情。您不必担心并发请求或类似的事情。关于文件夹同步我不能告诉你太多,请尝试更具体。哪些具体问题让您担心,到目前为止您尝试过什么?

【讨论】:

  • 我查看了您之前的问题,但您实际上从未接受任何答案,接受答案是 Stack Overflow 的重要组成部分。您可以找到更多信息here
  • 我刚才也浏览了它们。说实话,其中只有两个得到了回答,所以我给了他们信任(我想我之前忘记这样做了),其余的在一段时间后得到了我的答案或 cmets,我自己解决了这个问题。至于这个问题 - 我同意你的回答,但我问了更多的事情,我做这样的事情的做法好吗?我应该像这样同步,还是有一种更智能/开箱即用的方式?还有关于图片?
  • 澄清一下,我并不是要你接受我的回答。这只是一种观察,你从来没有接受过任何,甚至是你自己的。正如我所说,一次提出多个问题并不适合 Stack Overflow。一次提出多个问题的问题是很难一次回答所有问题。可能有一个答案对前半部分问题有正确答案,而另一个答案对后半部分有正确答案,那么您接受哪个答案呢?由于这个原因和其他原因,提出此类问题被认为是不合适的。
  • 我想我知道你来自哪里。确实我的问题有点大,但我仍然没有要求一个非常详细的答案,只是一个大致的方向 - 如果我的想法没问题或者我应该做其他事情。
  • 这取决于。如果您的应用需要频繁更新,这可能是最好的策略,但您需要考虑这可能会增加电池消耗。如果您只想向设备发送数据,最好的选择是使用 GCM。这样,您可以仅在必要时发送数据,例如,如果数据发生变化并且设备可以休眠更长的时间以节省电池和网络流量。关于你对图片的问题,你必须给我更多的信息来帮助你。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-07-08
  • 2011-07-15
相关资源
最近更新 更多