android Activity的onPause()与onResume()

官方文档地址:http://www.android-doc.com/training/basics/activity-lifecycle/pausing.html#Resume

Pause和Resume一个Activity

在一般的app使用中,前台的activity通常是会被视觉组件所遮住的,这就会导致activity的pause。

举个样例,当一个半透明的activity打开的时候(就像某种形式的对话框一样)。这之前的activity会pause。仅仅要activity仍然部分可见,可是当下activity并不可操作,它就处在pause中了。

可是。一旦这个activity所有被遮住了,而且不可见。它就stop了。

(这会在下节课讨论到)

当你的activity进入pause状态的时候,这个系统调用了在activity中的onPause()这种方法,onPause ()这种方法让你可以结束一些正在进行的任务,而这些任务在停止的时候就不能继续了(比方一个视频)。它也可以让你在用户执意要离开你的app时。留存应该被永久保存的信息。假设用户从pause的状态又回到了你的activity。这个系统resume这个activity而且调用了onResume()这种方法。

注意:当你的activity收到了一个调用onPause()的请求,它可能表示这个activity将会被停止一段时间而且使用者非常可能会再次回到你的activity来。

可是这也非常可能表示着用户正在离开你的app。

图片:当一个半透明的activity遮住了你的activity,这个系统调用了onPause(),而且activity在pause的状态中等待。

假设用户当它仍然pause的时候再次回到了activity。这个系统会调用onResume()。

pause你的Activity

当这个系统为你的activity调用onPause()的时候。讲道理的话。它意味着你的activity仍然是部分可见的,可是也非常有可能表示是用户正在离开你的activity而且它之后将非常快进入stop的状态。

你应该常常会在下面情况下用到onPause()。

1、  结束占用CPU的动画或者其它正在执行任务。

2、  提交没有保存的改变。可是仅仅有在用户离开的时候希望这些改变被保存的时候。

3、  释放系统资源,就像广播接收者。对传感器的操纵(就像GPS),或者在acitivity被pause之后和用户不须要的时候,不论什么可能影响你电池寿命的资源。

举个样例,假设你的应用用到了camera,那么onpause()方法是一个非常好的释放它的方法。

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

    // Release the Camera because we don't need it when paused
    // and other activities might need to use it.
    if (mCamera != null) {
        mCamera.release()
        mCamera = null;
    }
}

整体上说,你不应该使用onPause()来保存用户的改变到永久的存储空间中(比方表单输入个人信息)。

唯一的你须要用onPause()来把用户的改变存储到永久内存中的情况是。当你的某县用户须要自己主动化保存的时候(比方写一封email)。可是在onPause()中你应该避免运行占用大量CPU的工作,比方写入数据库。由于这会减慢你可视化转换到下一个activity的速度。

(你应该把这样的繁重的关闭操作放到onstop()中)

在onPause()方法中,你应该要保持一部分的操作。来保证你的activity结束的时候可以以较快的速度跳转到下一个用户目的地。

注意:当你的activity被pause的时候,这个activity实例在内存中是占用位置的,并且在Activity被resume的时候会被再次唤醒。你不须要在resume状态之前的不论什么回调函数中,又一次初始化不论什么已经被创建过的组件。

resume你的Activity

当用户从pause的状态resume你的activity的时候,系统调用了onResume()的函数。

考虑到系统每次进入前台运行的时候都会调用这个函数。即使是在这个activity已经被创建过的情况下。相同的你应该实现onResume()来初始化你在onPause()中释放的组件。而且而且运行一些其它在当activity进入resume状态的时候须要运行的初始化(比方打开动画,初始化仅仅有activity获取了焦点后才须要使用的组件)。

接下来的onResume()的样例是与onPause()在上面的样例相配的。所以它初始化了在activity被pause的时候须要释放的camera。

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

    // Get the Camera instance as the activity achieves full user focus
    if (mCamera == null) {
        initializeCamera(); // Local method to handle camera init
    }
}
时间: 2024-11-17 06:17:25

android Activity的onPause()与onResume()的相关文章

Android——Activity中的六个主要函数

Android Activity中的六个主要函数 Android中一个Activity一般都需要实现六个函数: onCreate(), onStart(), onResume(),onPause(),onStop(),onDestroy(). onCreate函数:注册你要用到的变量,比如说service,receiver,这些变量是无论你的Activity是在前台还是在后台都能够被响应到的,然后调用上面那个用来初始化的函数初始化布局信息. onStart函数:注册一些变量.这些变量必须在And

Android Activity类讲解(一)

--by CY[[email protected]] 1.protected void onCreate(Bundle savedInstanceState) { throw new RuntimeException("Stub!"); } 当创建一个Activity时,系统会自动调用onCreate方法来完成创建工作.该创建工作包括布局,监听器的绑定等. 首先说一下Bundle 这个类,Bundle是一个键值对,跟Map类似,两个Activity之间的通信可以用Bundle类来实现.

Android——Activity的生命周期

一,Demo测试Activity的生命周期 写两个Activity: package com.example.activity_04; import android.os.Bundle; import android.app.Activity; import android.content.Intent; import android.view.Menu; import android.view.View; import android.view.View.OnClickListener; im

【Android4高级编程笔记】深入探讨Android Activity

创建Activity 要创建一个新的Activity,需要对Activity类进行扩展,在新类定义用户界面并实现新的功能. 视图是用来显示数据和提高用户交互的Ui控件.Android提供了多个布局类,称为ViewGroup,它可以包含多个视图来帮助布局UI.Fragment用来封装UI的各个部分,从而能够方便地创建动态界面. Activity需要在Manifest中对其进行注册.在Manifest的application节点内添加新的activity标签:activity标签包含像标签.图标.必

[android] activity基础

//MainActivity package cn.eoe.helloeoe; import android.support.v7.app.ActionBarActivity; import android.R.string; import android.content.Intent; import android.os.Bundle; import android.view.Menu; import android.view.MenuItem; import android.view.Vie

Android Activity 生命周期的透彻理解

说来惭愧,虽然已经做了一年多的android开发,但是最近被人问起activity的生命周期的时候,却感觉自己并不能很自信很确定的回答对方的问题,对activity的生命周期的理解还不透彻啊.     既然发现了问题,那咱就得解决问题,不就个生命周期,能有多复杂. 首先看看android developers 网上的activity的生命周期图:      activity启动的时候:onCreate ---> onStart ---> onResume 这个过程不用多说,大家都知道.这里主要

Android Activity生命周期图解

Android 中 Activity生命周期 从网上摘的 事件回调方法  以下1-4 不可终止 . 1. onCreate()   :Activity 启动后第一个被调用的方法 ,常用来进行Activity的初始化,例如创建View.绑定数据或者恢复信息等 .. (? oncreate 可以恢复什么信息 ) 2. onStart() : 当Activity显示在屏幕上时,该方法被调用 3. onRestart() :当Activity从停止状态进入活动状态前,调用该方法 . 4.onResume

浅谈Android Activity

Activity是Android中最重要,最常见,也是最基本的组件,下面来详细介绍下Activity. 介绍 一个Acitvity作为一个显示在屏幕上的用户交互界面,比如在电子邮件应用中比如:一个用来显示收件列表的Activity,一个用来写邮件的Activity,一个阅读邮件内容的Activity,等等.Activity用来提供用户体验,许多不同体验的Activity聚集在一起即可以形成一个Android应用程序的用户体验,每一Activity都是相互独立的.应用除了可以访问自己的Activi

两分钟彻底让你明白Android Activity生命周期(图文)!

首先看一下Android api中所提供的Activity生命周期图(不明白的,可以看完整篇文章,在回头看一下这个图,你会明白的): Activity其实是继承了ApplicationContext这个类,我们可以重写以下方法,如下代码: 1 public class Activity extends ApplicationContext { 2         protected void onCreate(Bundle savedInstanceState);        3