【问题标题】:Android: Best way of handling continuous pulling from server?Android:处理从服务器连续拉取的最佳方式?
【发布时间】:2012-03-21 15:32:57
【问题描述】:

首先,我应该提一下,我是 Android 新手(在 Java 方面没有太多经验),所以请放轻松。

我正在制作一个应用程序,它不断地从服务器中提取数据,然后通过 http post 请求返回数据。问题是,处理从服务器实际拉取的最佳方式是什么?我应该使用 AsyncTask 还是创建另一个线程并让它在上面运行?有没有更好的方法来达到这个目的?

我将每 5 分钟提取一次数据。 (我知道这会很快耗尽电池,我肯定会使用 Androids C2DM 框架。但我之前没有这方面的经验,而且我在截止日期前,所以这必须做,直到我有时间学习如何实现它。)

感谢您的任何建议!

【问题讨论】:

  • 考虑使用Push而不是Pull。
  • 我提到了 C2DM 以及为什么我不打算使用它,它使用的是 Push 方法。我根本没有足够的时间来学习如何实现它。

标签: android multithreading android-asynctask pull-request


【解决方案1】:

作为 C2DM 的替代方案,您可以在设备和服务器之间建立持久的 TCP 连接。然后每 5 分钟,您的服务器就可以向设备推送一个 Tickle。被挠痒痒后,设备可以通过Http post请求信息。

这里是一些示例代码,说明如何做到这一点。即使在应用退出后,连接也会在后台线程中保持打开状态

创建和管理持久 TCP 套接字:http://openmobster.googlecode.com/svn/trunk/cloud/android/connection/src/main/java/org/openmobster/core/mobileCloud/android/module/connection/NotificationListener.java

完全披露:我是 OpenMobster 的首席工程师,我编写了这段代码。请随意使用您喜欢的任何东西,或者如果您需要的话,请了解一下

谢谢

【讨论】:

  • 我很抱歉,但这对我来说已经掌握了很多知识。这听起来像是我需要的,但我不能仅仅通过查看一个完成的示例来实现它。我需要一些教程才能开始使用它。另外,既然你提到它是 C2DM 的替代品,我认为它更容易设置?感谢您的建议!
  • 您可以完全控制自己的服务器,所以是的,它比 C2DM 更容易设置。它只是自己实现与重用现有服务之间的区别
【解决方案2】:

您是否需要在后台提取数据(即使您的应用未“打开”并且 android 设备正在休眠)?我想这就是你想要的,因为你提到了 C2DM。如果是这样.. 流行语是 AlarmManager(重复时间)/BroadCastReceiver,也许是 NotificationManager 来通知用户。使用 AlarmManager 您可以安排您的事件(每 5 分钟一次),使用 BroadcastReceiver 您可以接收这些事件并每 5 分钟执行一次您想做的事情:)

【讨论】:

  • 是的,即使应用程序“关闭”,我也会将其拉到后台。好像可以,明天去看看谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-01-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-08-24
  • 2014-06-15
相关资源
最近更新 更多