全部-我有一个运动追踪器应用程序,其中我有一个service
正在运行的秒表,因此用户的设备可以进入睡眠状态,而无需秒表停止。我还想Map
在我的应用程序中包含一个选项卡,以便用户可以看到他们去了哪里。我尝试使用主要活动来完成此操作,并且效果很好,但是每次手机进入睡眠状态时,主要活动都会退出,并随之拉下地图。这在 GPS 中造成了间隙,无法跟踪速度或距离。因此,我尝试将地图放入我的服务中,但遇到了诸如我的服务必须扩展MapActivity
(但也必须扩展Service
)之类的问题。这是我尝试过的:
public class KeepGoing extends Service { //But also has to extend MapView?
MapView mapView = null;
MapController mapController = null;
MyLocationOverlay whereAmI = null;
protected boolean isLocationDisplayed() {
return whereAmI.isMyLocationEnabled();
}
protected boolean isRouteDisplayed() {
return false;
}
还:
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
start();
return(START_NOT_STICKY);
}
private void start() {
mHandler.sendEmptyMessage(MSG_START_TIMER);
LayoutInflater inflater = ( LayoutInflater ) getSystemService( LAYOUT_INFLATER_SERVICE );
View layout = inflater.inflate( R.layout.activity_main , null );
mapView = (MapView) layout.findViewById(R.id.mapview);
mapView.setBuiltInZoomControls(true);
mapController = mapView.getController();
mapController.setZoom(15);
whereAmI = new MyLocationOverlay(this, mapView);
mapView.getOverlays().add(whereAmI);
mapView.postInvalidate(); }
我的方法中没有任何与地图相关的代码onDestroy
。我的问题是:如何将 amapView
放入服务中,以便它即使在设备处于睡眠状态时也能运行和/或是否有另一种/更好的方法来完成此操作?
感谢您的时间和精力!