总是 运行 联网 android 应用程序的最佳做法是什么?

What is the best practice for always running networking android app?

我正在实施将始终 运行 并连接到服务器的应用程序。

所以平板电脑除了 运行 这个应用程序之外别无他法,并始终检查服务器以在屏幕上显示更新。

保持应用程序始终 运行 和连接的最佳做法是什么?

根据我的经验,我有 2 个选项可以解决这个问题:

  1. Service 总是 运行 并连接到我的 activity 以保持更新。
  2. threads 中的工作保留在 activity 中,因为 activity 将始终保持打开状态。该应用程序将始终打开。

我的问题是:

  1. 保留应用 运行 全部的最佳做法是什么?
  2. 保持应用连接的最佳做法是什么? activity 内的话题?或连接到 activity?
  3. 的服务
  4. 这种应用类型有什么更好的结构吗?

谢谢

如果你阅读了 Android 的官方文档。最好的解决方案是为您的应用程序使用服务。它准备在后台连续 运行。你可以实现它以透明的方式检查网络,你可以将信息绑定到另一个 activity。此外,如果您以后想要更改连接或要求(不会影响您的应用程序活动),它的可扩展性更高。

编辑。 好的一点是,如果有一天您的应用程序出于某种原因不在前台。该服务仍然可以 运行ning。为长时间 运行ning 任务准备服务 http://developer.android.com/guide/components/services.html

  1. 电池是我会一直考虑的问题,尤其是在必须完成网络任务时。所以分析一下绝对有必要连接服务器的地方。
  2. 每当您的服务器需要联系设备时使用 GCM 推送通知,这将节省您将用于轮询服务器的电池电量

Service v/s Thread

与使用服务有关,您应该在其中生成工作线程来执行网络任务 这些线程完成后将通知主服务线程,因为您需要在 android

中使用 Handlers

我更喜欢服务而不是线程,因为如果你关闭 activity 网络请求在请求完成后仍会得到满足,将其保存在某种存储形式中(database/share pref/content 提供者)并从他们那里取回它。完成后,不要在适当的时候通过所有 stopSelf 破坏服务,否则服务将继续耗尽您的 phone 资源。这会让你的应用成为坏公民。

我提到的 about 模式的一个简单实现是 IntentService,它将自动生成工作线程,即您只需重写 handleIntent 方法并在那里完成所有不会在主线程上进行的繁重工作。当 if 发现自己无所事事时,IntentService 会自行杀死它 根据我的理解,你问的问题与与服务器同步有关,你可以在 android 文档中找到更多相关信息 http://developer.android.com/training/building-connectivity.html