0

我有一个包含大约 10 个和更多活动的应用程序。

我正在尝试与后端服务器同步。(我发送一些数据,然后取回一些数据,这些数据存储在数据库等中)

只要我的应用程序可见,我就想保持同步运行。我的问题是在 Android 上没有“我的应用程序正在运行”的真正概念。此外,用户可能有很多退出点,以至于很难知道我应该将代码放在哪个 onPause/onStop 中。(纠正我,如果我在这里错了,请解释)。

请注意,我不会从此同步机制中更改与 GUI 相关的内容。

我被建议了几个可以总结如下的解决方案。

  1. 做一个服务并将其绑定到每个活动。只要服务有所有者,它就会运行,只要它没有,它就会停止。
  2. 使用参考计数器进行同步。获取一个运行同步的单例类,并在每个 onStart 和 onStop 上,添加或减去我的计数器,并在计数器为 0 时停止同步。
  3. 子类化应用程序上下文(或制作静态变量)以查看每个活动的状态,并在每个 onResume 和 onPause 内部进行检查并相应地启动/暂停/停止同步。

推荐哪种方法,如果有其他想法,请分享。

4

1 回答 1

0

您可以使用SyncAdapter。Google IO Session 介绍了如何从 2010 年开始将您的应用程序与同步适配器同步。(如果这不起作用,该链接包含开始对您感兴趣的时间,它从 44 分钟开始)

如果您不想使用 SycAdapter 并且您的目标是仅在应用可见时进行同步,您可以执行以下操作:

创建一个Service. 在您的每个活动上启动/重新启动它onResume()(=应用程序进入前台),在每个活动上停止它onStop()onPause()(=应用程序进入后台)。如果服务正在运行,它会同步您的数据。一旦没有活动可见,就没有同步。您可以使用提到的 ref 计数器在整个前台阶段保持服务运行,这取决于同步的实现方式(短同步与长同步)

于 2013-10-27T20:02:16.277 回答