在我的应用程序中,我有一个Service
接收位置更新并将它们存储到数据库。我也有一个Fragment
,它显示从数据库中记录的所有航点的MapView
和PolyLine
。更好的方式来更新PolyLine轨道的GPS读数
在录制过程中,Service
通知Fragment
有关新的路标,因此Fragment
可以更新PolyLine
。问题是,当用户从应用程序导航离开应用程序Service
保持记录航点到数据库,但现在Fragment
自Fragment
暂停后不会更新。因此,在onResume
中,我创建了一个新的PolyLine
,读取数据库中的所有路点并将它们添加到数据库中。
这一切都工作正常,但它并不真的觉得它是从性能角度来说是最佳的创建一个新的PolyLine
并重新添加所有的航点(可能有成千上万!)。我想我可以重新添加任何尚未在PolyLine
中的新航点,但我想看看这里有人是否有替代解决方案?即使应用程序处于后台(只要服务正在运行),是否有任何方法可以使Fragment
“保持活动状态”并更新其PolyLine
?还是有更好的方法来做到这一点?
谢谢,这是一些很好的建议!当我注册我的位置更新侦听器时,我已经在做#2(默认距离为10米)。直线检测是一个很好的,不知道如何实现它 - 它需要某种宽容... – BadCash
@BadCash有几种方法可以实现这一点。我能想到的最好的方法是计算中间点到两个周围点所创建线的距离,并检查它是否小于由您需要的误差范围确定的某个值。 –
再次感谢:)是的,这将是一种方式。我还有一个想法 - 如果我将AmB(m =中点)的路径长度与直路径AB的长度进行比较,如果第一个路径与直路径的距离在一定的公差范围内(长于)可以认为是直的? – BadCash