2010-07-10 2 views
1

Я только начал работать над своим первым Android-приложением, и все нормально. Мне удалось заставить приложение найти текущую позицию на карте и разместить там синий круг. Я вижу значок спутника на панели уведомлений (спутниковая антенна с отлучением лучей).Первое приложение для Android использует местоположение и карты GPS, но работает с батареей

Я очень новичок в телефонах Android в целом, но после завершения работы с моим приложением я просто выхожу из него либо с помощью задней клавиши, либо с домашнего ключа, который отлично работает, однако я заметил, что значок спутника все еще работает. Спустя час телефон возвращается в мой телефон. Это, конечно, очень быстро посылает аккумулятор телефона.

Я полагаю, в отличие от iPhone, что приложения для Android могут работать в фоновом режиме, и это все еще работает. Как заставить приложение прекратить использование 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); 
} 

мне нужно отключить что-то, когда я уезжаю вид карты ли? если да, то как?

Приветствия ребята

ответ

4

Вы, вероятно, следует взглянуть на Activity Lifecycle. Короче говоря, ваше предположение верно: Android не просто убивает ваше приложение, когда вы его покидаете.

Вам необходимо реализовать метод onPause() и unregister the GPS listener. И, возможно, также удалить карту, но я не думаю, что это имеет большое значение с точки зрения времени автономной работы.

Кроме того, вы должны переместить registration of the GPS в onResume(). Это необходимо, чтобы снова включить GPS, когда ваше приложение возвращается в поле зрения.

Методы onPause(), onResume(), onCreate() (и т. Д.) Вызываются самим андроидом в соответствующие моменты времени.

+0

Спасибо, очень полезный ответ. Кажется, учебник, который я начал с книги, оставил эти важные части. Должен ли я включить enableMyLocation внутри onCreate(), но также и внутри onResume(), поэтому он работает при первом запуске приложения? Или все-таки это работает? или я вызываю onResume из onCreate? –

+0

Он запускается onResume в любом случае, также когда приложение будет запущено. Посмотрите на изображение немного ниже в моей первой ссылке выше. Я распечатал и приколол рядом с моим TFT ;-) – pableu

1

Daniel,

В карты наложения API есть вызовы функций, которые будут регистрировать и UNREGISTER слушателя для вас ...

Вы уже называть enableMyLocation(); теперь вам нужно вызвать overlay.disableMyLocation();

В onPause.

Смежные вопросы