首页 » Android程序设计:第2版 » Android程序设计:第2版全文在线阅读

《Android程序设计:第2版》暂停和恢复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 */@Overridepublic void onPause {    super.onPause;    mMyLocationOverlay.disableMyLocation;}/** * @see com.google.android.maps.MapActivity#onResume */@Overridepublic void onResume {    super.onResume;    mMyLocationOverlay.enableMyLocation;}  

注意,如果在MyLocationOverlay中包含指南针,则也需要支持对它执行disable和enable操作。否则,系统会周期性地更新指南针的方向,虽然该指南针在屏幕上是看不见的,这对电池是一种无谓的浪费。