第一款Android应用使用GPS定位和地图,但电池电量不足

时间:2010-07-10 08:28:20

标签: android google-maps gps

我刚刚开始研究我的第一个Android应用程序,我还好。我设法让应用程序在地图上找到我当前的位置并在那里放置蓝色圆圈。我可以看到通知栏中的卫星图标正常工作(带有光线的卫星天线)。

我对Android手机很新,但在完成我的应用程序后,我只需使用后退键或主键即可正常退出,但是我注意到卫星图标仍在工作。一小时后回到我的手机,GPS仍在运行。这当然会很快将手机电池放平。

我认为与iPhone不同的是,Android应用可以在后台运行并且仍在运行。当地图视图中不再使用GPS时,如何让我的应用停止使用GPS?

这是我到目前为止所做的一个例子:

//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);
}

离开地图视图时是否需要禁用某些内容?如果是这样,怎么样?

干杯球员

2 个答案:

答案 0 :(得分:4)

你应该看一下Activity Lifecycle。简而言之,您的假设是正确的:Android不会在您离开时杀死您的应用程序。

您必须实施 onPause()方法和unregister the GPS listener。也许还可以删除mapview,但我认为这在电池寿命方面并不重要。

此外,您应该将registration of the GPS移到 onResume()方法中。当您的应用程序重新进入视图时,为了再次启用GPS,这是必要的。

onPause(),onResume(),onCreate()等等方法在适当的时候由android自己调用。

答案 1 :(得分:1)

丹尼尔,

在地图覆盖API中,有一些函数调用将为您注册和取消注册侦听器...

您已经在调用enableMyLocation();现在你需要调用overlay.disableMyLocation();

在onPause中。