在Google Maps Android中动态更新标记

时间:2014-06-30 00:15:37

标签: android google-maps

我很遗憾发布这样一个看似愚蠢的问题,但如何在没有用户互动的情况下动态更新地图标记呢?我记得像Uber这样的东西,你在地图上看到一个标记,代表一辆汽车在地图上移动,基于它从某个服务器某处收到的gps坐标。

我从未使用动态实时数据,所以我不确定使用的Android范例是什么。

我有一个正在生成GPS坐标的网络应用。我希望我的应用程序不断轮询我的Web服务器以获取更新的坐标,然后根据这些坐标移动我的Android应用程序上的现有标记。

我该怎么做呢?的AsyncTask?服务?一会儿循环!?!

感谢您提出任何指示

1 个答案:

答案 0 :(得分:3)

AsyncTask并不适合这类任务。来自documentation

  

理想情况下,AsyncTasks应该用于短时间操作(几秒钟)   最多。)

对于您描述的场景,有两种可能更适合的解决方案:长期运行的线程或服务。如果您希望此轮询继续进行,即使应用程序当前处于后台(但在这里似乎不是这种情况),服务将特别有用。

我建议您在创建活动或片段时创建新的Thread,然后运行poll / sleep循环。每当“活动”暂停时(onPause()),请务必中断此主题,并在onResume()中继续。此外,请务必仅从UI线程更新MapView - 这是Android编程中的一项要求。您可以使用Handler执行此操作。

请注意,持续轮询会对电池寿命造成重大影响。根据更新频率和其他标准,您可以考虑替代方案(例如使用GCM)。我建议你看一下"Transferring Data Without Draining the Battery" section of the training docs