Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/203.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在android服务中的单独线程中运行位置更新_Android_Service_Location_Runnable - Fatal编程技术网

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

在android服务中的单独线程中运行位置更新,android,service,location,runnable,Android,Service,Location,Runnable,在决定如何执行后台服务任务时,我有点困惑。下面是我的服务的样子 Android服务(在后台有两个任务要做) 注册locationListener,当收到新位置时,对其进行处理以确定是否为最佳位置 每10分钟轮询一次服务器,以检查是否有任何服务器端更改到远程数据库 现在,我不希望这两项任务为时间和资源而争斗。所以我计划同时运行这两个。对于轮询服务器,我使用的是重复timerTask,但是对于LocationListener,我应该使用什么 是否可以使用java runnable处理带有一些逻辑的新

在决定如何执行后台服务任务时,我有点困惑。下面是我的服务的样子

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

  • 注册locationListener,当收到新位置时,对其进行处理以确定是否为最佳位置

  • 每10分钟轮询一次服务器,以检查是否有任何服务器端更改到远程数据库

  • 现在,我不希望这两项任务为时间和资源而争斗。所以我计划同时运行这两个。对于轮询服务器,我使用的是重复timerTask,但是对于LocationListener,我应该使用什么

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


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

    在文档中,我看不到任何东西表明您不能注册在您的服务中运行的LocationListener:

    这是一个带有答案的类似问题,您应该阅读:

    “现在我不希望这两项任务在时间和资源上发生冲突。因此我计划同时运行这两项任务。” ^含糊不清的陈述之后是一个看似违反直觉的计划。如果你能具体说明“时间”和“资源”的含义,那么你可能会得到一些有用的反馈

    简短答复: 对注册LocationListener,当位置更新可用时将调用它。它是一个监听器,无论你注册到什么地方,它都会在需要时被调用——你不需要自己调用它。最佳实践是不要在TimerTask上重复一次,而是使用一次放炮,该放炮由每次滴答声调用的代码重置


    至于免费代码,也许你应该雇佣一个人来为你做艰苦的工作?这将在Android社区创造另一份工作,并降低你尝试不太精通的东西的风险。否则,请动手并尝试以您认为最有效的方式实施,如果遇到特定问题,请返回堆栈溢出。

    straya:谢谢您的回复。但从您的回答来看,您似乎认为任务和位置更新任务是相同的。目前,我没有使用TimerTask进行定位。但计时器任务用于从远程Web服务器获取一些数据库更新。可能是在运行timerTask my location侦听器时调用的。这就是为什么我想实现这个线程。如果你能对我的新澄清发表意见。。这将对我有帮助…不,我不认为它们是一样的。如果你认为这就是我根据我所写的内容所想的,那么你这边就有问题了。重新仔细阅读我说的话。注册侦听器,让它做自己的事情。设置TimerTask,让它完成它的任务。如果它们“同时”运行(让我觉得你在隐瞒重要信息),你会在意什么