始终运行网络Android应用程序的最佳做法是什么?

时间:2015-09-04 08:14:03

标签: android multithreading android-service android-networking

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

因此平板电脑除了运行此应用程序之外没有任何其他操作,并且一直检查服务器以便在屏幕上显示更新。

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

根据我的经验,我有2种方法可以解决这个问题:

  1. 服务始终正在运行并连接到我的活动以保持更新。
  2. 在活动中保持主题中的工作,因为活动将始终保持开启状态。该应用程序将始终打开。
  3. 我的问题是:

    1. 保持应用程序全部运行的最佳做法是什么?
    2. 保持应用连接的最佳做法是什么?活动中的主题?或与服务相关的服务?
    3. 这种应用类型是否有任何优选的结构?
    4. 谢谢

2 个答案:

答案 0 :(得分:2)

  1. 电池是我将始终考虑的事情,尤其是在必须完成网络任务时。因此,分析连接服务器绝对必要的点。
  2. 每当您的服务器需要联系设备时,请使用GCM推送通知,这将节省您将用于轮询服务器的电池费用
  3. 好的

      

    服务v / s线程

    涉及使用服务,在该服务中,您应该生成将执行网络任务的工作线程 这些线程将在完成后通知主服务线程,您需要在android

    中使用用户处理程序

    我赞成通过线程提供服务,因为如果你关闭活动网络请求仍然会在请求完成后完成,请将其保存在某种存储形式(数据库/共享pref / content提供程序)中并从中检索它。一旦你完成了,不要让所有stopSelf摧毁服务适当的一点,否则服务将继续耗尽你的电话资源。这将使你成为一个坏公民。

    我提到的about模式的一个简单实现是IntentService,它会自动生成工作线程,你只需要覆盖handleIntent方法并完成那些不在主线程上的重组。如果发现自己在做什么,那么IntentService会自动杀死它 您向我的理解提出的问题涉及与服务器同步,您可以从Android文档中找到更多信息 http://developer.android.com/training/building-connectivity.html

答案 1 :(得分:1)

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

EDIT。 好的一点是,如果有一天你的应用程序不在前台。该服务仍然可以运行。服务是为长期运行的任务准备的http://developer.android.com/guide/components/services.html