Android API 中文 (2) —— 暂停和恢复一个Activity

      在正常的应用程序使用时,前台活动有时通过所述活动暂停等可视部件阻塞。例如,当一个半透明活性打开(诸如一个在一个对话的方式),在以前的活动暂停。只要活动仍部分可见,但当前未处于焦点中的活动,它保持暂停。

然而,一旦活性完全阻塞和不可见的,它停止(这将在下一课讨论)。


当你的活动进入暂停状态时,系统调用的onPause()方法的活动,它允许你停止不应该继续暂停时(如视频)正在进行的动作或持续存在,应永久保存,以防任何信息用户继续留下您的应用程序。如果用户返回到从暂停状态的活动,系统恢复,并调用onResume()方法。

http://img.blog.csdn.net/20160112133518271?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center


注意:当你的活动接听电话时的onPause(),它可能是一个迹象,该活动将被暂停了一会儿,用户可以将焦点返回到你的活动。然而,这通常是第一个迹象表明,用户正在离开你的活动。

图1.当一个半透明的活动掩盖了你的活动,系统调用的onPause()和暂停状态的活动等待(1)。如果用户返回到该活动,同时它仍然暂停,系统会调用onResume()(2)。

暂停活动
当系统调用onPause()为您的活动,在技术上意味着你的活动仍在部分可见,但多数情况下是显示用户正在离开该活动,并很快将进入停止状态。通常你应该使用的onPause()回调到:
  ·停止动画或可能消耗CPU的其他正在进行的动作。
  ·提交未保存的更改,但前提是用户希望这样的改变,当他们离开(如电子邮件草稿)被永久保存。
  ·释放系统资源,如广播接收器,处理到传感器(如GPS),或可能影响电池寿命,同时您的活动暂停,用户不需要他们的任何资源。
例如,如果您的应用程序使用相机时,在onPause()方法是一个很好的释放。

@Override
public void onPause() {
    super.onPause();  // Always call the superclass method first

   //松开相机,因为我们不需要它暂停时
    //等活动可能需要使用它。
    if (mCamera != null) {
        mCamera.release()
        mCamera = null;
    }
}
通常情况下,你不应该使用的onPause()来存储用户的变化(如进入了一个形式的个人信息)到永久存储。你要坚持内的onPause用户更改为永久存储唯一的一次()是当你某些用户期望的变化是自动保存(起草一封电子邮件时,如)。但是,你应该避免在onPause(期间执行CPU密集型的工作),如写入数据库中,因为它可以减缓可见过渡到下一个活动(你应该不是的onStop期间执行高负载的关机操作())。

你应该保持,以便允许为迅速过渡到用户的下一个目的地,如果您的活动实际上正在停在onPause()方法比较简单进行的操作的数量。

注意:如果你的活动暂停,活动实例保持驻留在内存中的活动恢复的时候被调用。不需要重新初始化过程中的任何的回调方法导致对续状态中创建的组件。

恢复您的活动
当用户从恢复暂停状态的活动时,系统会调用onResume()方法。

请注意,系统调用这个方法每一个你的活动进入了前台,当它首次创建包括时间。因此,你应该实现onResume()来初始化你的onPause(期间释放组件)和执行必须在每个活动进入已恢复状态时间任何其他初始化(如开始动画和初始化组件仅用于该项活动具有用户焦点)。

onResume()的下面的例子是对方给的onPause()上面的例子,所以它初始化多数民众赞成发布活动时暂停相机。
@Override
public void onResume() {
    super.onResume();  // Always call the superclass method first

    //获取摄像头实例作为活动达到完整的用户重点
    if (mCamera == null) {
        initializeCamera(); // 本地方法来处理摄像头的init
    }
}




你可能感兴趣的:(Android API 中文 (2) —— 暂停和恢复一个Activity)