讀古今文學網 > Android程序設計:第2版 > 暫停和恢復MapActivity >

暫停和恢復MapActivity

現在,我們來看地圖activity,這裡說明了一種有助於節省電池的方式。好消息是Android框架使得這個操作相當簡單。

在移動環境中,電池壽命就是一切,如果應用當前沒有顯示,我們希望盡可能減少其電池消耗。回顧一下在Android生命週期中探討過的(見P279「對生命週期進行可視化」一節的內容),當一個Activity(如MicroJobs)啟動另一個Activity(如MicroJobsList)時,新的Activity會佔用屏幕,調用Activity會被放到活動棧中,等待運行。Android會執行調用Activity的onPause方法,因此這個活動可以準備休眠。這時,在MicroJobs.java文件(或者任何使用地理位置更新的MapActivity)中,我們希望關閉地理位置更新。這麼做至少可以把生命週期用於執行更新,而且可以讓手機把地理位置提供者置於靜止狀態,該狀態可以使用更少的電源,從而更加省電。

當被調用的Activity(在這個例子中,即MicroJobsList)退出時,調用Activity會從棧中彈出,並控制屏幕,Android框架會調用該Activity的onResume方法。在MapActivity中,我們希望調用onResume方法時,再次打開地理位置更新。

在MicroJobs示例中,onPause方法和onResume方法都很簡單:


/**
 * @see com.google.android.maps.MapActivity#onPause
 */
@Override
public void onPause {
    super.onPause;
    mMyLocationOverlay.disableMyLocation;
}
/**
 * @see com.google.android.maps.MapActivity#onResume
 */
@Override
public void onResume {
    super.onResume;
    mMyLocationOverlay.enableMyLocation;
}
  

注意,如果在MyLocationOverlay中包含指南針,則也需要支持對它執行disable和enable操作。否則,系統會週期性地更新指南針的方向,雖然該指南針在屏幕上是看不見的,這對電池是一種無謂的浪費。