Android模式:意图服务,线程或其他

时间:2013-12-02 12:29:58

标签: android multithreading android-intent intentservice

我有离线工作并与服务器同步。 因此,当有Internet连接时,用户正在进行更改并且所有更改都是同步的(两种方式)。当新数据从另一个源(例如WWW)到达时,服务器也向客户端发送推送。客户端在尝试推送后尝试从服务器获取新数据。

我在后台运行的手动创建的线程上完成了所有操作。我正在重构这个代码,我认为我可以将它移动到IntentService。我从这个“模块”所需要的只是:

  • 同步,如果有Internet连接并且是新的同步(用户在接收到来自服务器的推送后进行的更改)
  • 如果Internet连接已更改并且要进行同步,则重试同步

在Android应用中创建多个intent服务是个好主意吗?

1 个答案:

答案 0 :(得分:1)

IntentService远比代码线程从头开始好,你可以让多个服务“运行”(小心“运行”服务的概念)。请记住,更多服务同时“运行”意味着更多线程和更多资源被耗尽。

但如果你不需要实时同步(你真的需要它吗?你确定吗?)看看SyncAdapters,这是让Android本身处理一些同步问题的好方法,比如缺乏互联网连接:

http://developer.android.com/training/sync-adapters/index.html

Google Cloud Messaging也可以为您提供帮助:

http://developer.android.com/google/gcm/index.html

关于SyncAdapters的重要说明:您可以提示它何时进行同步,但可能会有延迟...所以请注意这会对您的应用程序产生何种影响。