2012-02-25 90 views
2

我在决定实现我的后台服务任务的方式时感到有点困惑。以下是我的服务模样。在Android服务的单独线程中运行位置更新

的Android服务(有两个任务在后台做)

  1. 注册LocationListener的,当新的位置接收,处理它决定最佳位置与否。

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

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

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

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

回答

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,当位置更新可用时它将被调用。这是一个LISTENER,因为无论您注册什么,它都会被调用 - 您不需要自己调用它。最佳做法是不要在TimerTask上重复使用,而是使用一次性镜头,通过每次打勾调用的代码重置该镜头。

至于免费的代码,也许你应该聘请某人为你辛苦工作?它会在Android社区创造另一份工作,并减轻您尝试某些您不熟悉的事情时涉及的风险。否则,请尽你所能实施,并按照您认为最好的方式实施,回到如果/遇到特定问题时堆栈溢出。

+0

straya:谢谢你的回复。但是从你的回答看来,你认为任务和位置更新任务是相同的。目前我没有使用TimerTask作为位置。但计时器任务用于从远程Web服务器获取一些数据库更新。可能是运行timerTask时我的位置监听器被调用。这就是为什么我想要实现这个线程。如果你可以评论我的新澄清..它会对我有帮助... – 2012-02-25 03:50:47

+0

不,我不认为他们是一样的。如果你认为这就是我根据我写的内容所做的想法,那么你的目的就是错误的。重新阅读我非常小心的话。注册听众,让它做到这一点。设置TimerTask,让它做它的事情。如果他们在同一时间运行,你会关心什么(让我觉得你对重要信息不屑一顾......) – straya 2012-02-25 04:11:19

相关问题