在决定实施后台服务任务的方式时,我有点困惑。以下是我的服务。
Android服务(在后台有两项任务)
注册locationListener,当收到新位置时,处理它以决定最佳位置。
每10分钟轮询一次服务器,检查服务器端是否更改了远程数据库。
现在我不希望这两项任务争夺时机和资源。所以我打算同时运行这两个。对于轮询到服务器我使用重复的timerTask但是对于LocationListener我应该使用什么?
使用java runnable处理具有某些逻辑的新位置并将位置更新到服务器是否可以?如果我的想法没问题,请提供一些示例代码,以说明如何在新线程中执行位置更新。
如果您认为我目前的想法有任何问题,请为我的要求提出一些新的建议。
答案 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社区中创建另一项工作,并降低您尝试不熟悉的事项所涉及的风险。否则,请亲自动手并尝试以您认为最佳工作的方式实施它,回到如果/当遇到特定问题时,堆栈溢出。