我已经实施了foreground service
,以便每10秒为我提供当前位置。使用收集的数据,我想在地图上显示路线。
但是,由于节省了电池电量,因此在处理位置跟踪和服务时,电话的屏幕将不会一直打开。因此,活动将调用onPause()
,onStop()
方法,并且MapView
更新的最早时间将在onResume()
之后。到目前为止,每次向活动广播时,我都会发送所有LatLng
对象的列表,清除到目前为止的路由,然后使用Polyline
重新显示该路由]
它可以完成工作,但是就系统资源而言,我发现它效率很低。
替代方案将在每次广播中保存,将接收到的LatLng对象保存在活动中初始化的List<LatLng> points=new ArrayList<LatLng>();
之类的列表中,并且为了显示数据,计算接收到的坐标与已保存在活动列表中的坐标之间的差,并且仅显示Polyline
中的内容。
您怎么看?是否有比这两种更好的方法?
我已经实施了前台服务,每10秒为我提供当前位置。利用收集的数据,我想在地图上显示一条路线。但是,在处理位置跟踪时...
设置当前路线的唯一ID。服务运行时,将这些点存储到数据库中。然后广播您的事件(可能带有您当前的路线ID),并将其与“活动”分开加载以获取积分。