只要应用程序正在运行,就可以同步策略

时间:2013-10-27 19:05:05

标签: android

我有一个包含大约10个以上活动的应用程序。

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

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

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

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

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

1 个答案:

答案 0 :(得分:0)

您可以使用SyncAdapter。有一个Google IO Session on how to sync your app with sync adapter from 2010。 (该链接包含它开始变得有趣的时间,如果这不起作用,它从44分钟开始)

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

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