第一款Android应用程序使用GPS定位和地图,但电池电量不足
我刚刚开始开发我的第一个Android应用程序,现在一切正常。我已经设法让应用程序在地图上找到我的当前位置,并将蓝色圆圈放在那里。我可以看到通知栏中的卫星图标正在工作(卫星天线发出光线) 我对android手机非常陌生,但在使用完我的应用程序后,我只需使用back键或home键退出它,这两个键都可以正常工作,但我注意到卫星图标仍在工作。一小时后回到我的手机上,GPS仍在运行。这当然会使手机电池很快耗尽 我认为与iPhone不同的是,Android应用程序可以在后台运行,并且仍然在运行。当我的应用程序不再在地图视图中时,如何让它停止使用GPS 以下是我迄今为止所做工作的一个例子:第一款Android应用程序使用GPS定位和地图,但电池电量不足,android,google-maps,gps,Android,Google Maps,Gps,我刚刚开始开发我的第一个Android应用程序,现在一切正常。我已经设法让应用程序在地图上找到我的当前位置,并将蓝色圆圈放在那里。我可以看到通知栏中的卫星图标正在工作(卫星天线发出光线) 我对android手机非常陌生,但在使用完我的应用程序后,我只需使用back键或home键退出它,这两个键都可以正常工作,但我注意到卫星图标仍在工作。一小时后回到我的手机上,GPS仍在运行。这当然会使手机电池很快耗尽 我认为与iPhone不同的是,Android应用程序可以在后台运行,并且仍然在运行。当我的应用
//find and initialise map view
private void initMapView() {
map = (MapView) findViewById(R.id.map);
controller = map.getController();
map.setSatellite(false);
map.setBuiltInZoomControls(true);
}
//start tracking the position on the map
private void initMyLocation() {
final MyLocationOverlay overlay = new MyLocationOverlay(this, map);
overlay.enableMyLocation();
//overlay.enableCompass(); does not work in emulator
overlay.runOnFirstFix(new Runnable() {
public void run() {
//zoom in to current location
controller.setZoom(8);
controller.animateTo(overlay.getMyLocation());
}
});
map.getOverlays().add(overlay);
}
离开地图视图时是否需要禁用某些功能?如果是,怎么做
干杯伙计们你们可能应该看一下。简言之,你的假设是正确的:当你离开应用程序时,Android并不仅仅会杀死它 您必须实现onPause()方法和。也许还可以删除mapview,但我认为这对电池寿命没有多大影响 另外,您应该将移动到onResume()方法中。这是必要的,以便在应用程序重新进入视图时再次启用GPS
onPause()、onResume()、onCreate()等方法会在适当的时候被android自己调用。您可能应该看看。简言之,你的假设是正确的:当你离开应用程序时,Android并不仅仅会杀死它 您必须实现onPause()方法和。也许还可以删除mapview,但我认为这对电池寿命没有多大影响 另外,您应该将移动到onResume()方法中。这是必要的,以便在应用程序重新进入视图时再次启用GPS 安卓会在适当的时候调用onPause()、onResume()、onCreate()等方法。Daniel 在maps overlay API中,有一些函数调用将为您注册和注销侦听器 您已经在调用enableMyLocation();现在需要调用overlay.disablelyLocation() 在暂停中 丹尼尔 在maps overlay API中,有一些函数调用将为您注册和注销侦听器 您已经在调用enableMyLocation();现在需要调用overlay.disablelyLocation()
在暂停中 谢谢,这是一个非常有用的回答。我从一本书开始的教程似乎遗漏了这些重要的部分。我是否应该在onCreate()中同时在onResume()中使用enableMyLocation,以便在您第一次启动应用程序时可以使用它?或者它会在Resume上运行吗?还是从onCreate调用onResume?不管怎样,它都会在Resume上运行,如果应用程序刚刚启动,也会在Resume上运行。在我上面的第一个链接中,再往下看一点图片。我已经把它打印出来并钉在我的TFT旁边;-)谢谢,这是一个非常有用的回答。我从一本书开始的教程似乎遗漏了这些重要的部分。我是否应该在onCreate()中同时在onResume()中使用enableMyLocation,以便在您第一次启动应用程序时可以使用它?或者它会在Resume上运行吗?还是从onCreate调用onResume?不管怎样,它都会在Resume上运行,如果应用程序刚刚启动,也会在Resume上运行。在我上面的第一个链接中,再往下看一点图片。我已经把它打印出来并钉在我的TFT旁边;-)