在android服务的单独线程中运行位置更新

时间:2012-02-25 03:09:39

标签: android service location runnable

在决定实施后台服务任务的方式时,我有点困惑。以下是我的服务。

Android服务(在后台有两项任务)

  1. 注册locationListener,当收到新位置时,处理它以决定最佳位置。

  2. 每10分钟轮询一次服务器,检查服务器端是否更改了远程数据库。

  3. 现在我不希望这两项任务争夺时机和资源。所以我打算同时运行这两个。对于轮询到服务器我使用重复的timerTask但是对于LocationListener我应该使用什么?

    使用java runnable处理具有某些逻辑的新位置并将位置更新到服务器是否可以?如果我的想法没问题,请提供一些示例代码,以说明如何在新线程中执行位置更新。

    如果您认为我目前的想法有任何问题,请为我的要求提出一些新的建议。

1 个答案:

答案 0 :(得分:1)

我什么也没看到,建议您不能在文档中注册在您的服务中运行的LocationListener: http://developer.android.com/reference/android/location/LocationListener.html http://developer.android.com/guide/topics/location/obtaining-user-location.html

这是一个类似的答案问题,您应该阅读: Android service with locationListener callbacks

“现在我不希望这两项任务争夺时间和资源。所以我打算同时运行这两项任务。” ^模糊的陈述后面是一个看似违反直觉的计划。如果您可以通过“计时”和“资源”具体说明您的意思,那么您可能会得到一些有用的反馈。

简短回答: 是。注册LocationListener,当位置更新可用时将调用它。这是一个聆听者,只要你注册它就需要它被调用 - 你不需要自己调用它。最佳做法是不对TimerTask进行重复操作,而是使用一次性镜头,通过每次调用时调用的代码重置。

至于免费代码,也许你应该聘请某人为你做艰苦的工作?它将在Android社区中创建另一项工作,并降低您尝试不熟悉的事项所涉及的风险。否则,请亲自动手并尝试以您认为最佳工作的方式实施它,回到如果/当遇到特定问题时,堆栈溢出。