暂停和继续Activity

翻译 2016年08月30日 14:04:24

暂停和继续Activity

本课程将向您展示如何

  1. 暂停Activity
  2. 继续Activity

您还应阅读

试一试

下载演示

ActivityLifecycle.zip

在正常使用应用的过程中,前台Activity有时会被其他导致Activity暂停的可视组件阻挡。 例如,当半透明Activity打开时(比如对话框样式中的Activity),上一个Activity会暂停。 只要Activity仍然部分可见但目前又未处于焦点之中,它会一直暂停。

但是,一旦Activity完全被阻挡并且不可见,它便停止(将在下一堂课中讨论)。

当您的Activity进入暂停状态时,系统会对您的 Activity 调用 onPause() 方法,通过该方法,您可以停止不应在暂停时继续的进行之中的操作(比如视频)或保留任何应该永久保存的信息,以防用户坚持离开应用。如果用户从暂停状态返回到您的Activity,系统会重新开始该Activity并调用 onResume() 方法。

注意:当您的Activity收到对 onPause() 的调用时,可能意味着Activity将暂停 一会,并且用户可能从焦点返回到您的Activity。但这通常意味着用户即将离开您的Activity。

图 1.当半透明Activity阻挡您的Activity时,系统会调用 onPause() 并且Activity会在“暂停”状态下等待 (1)。 如果用户在Activity仍然处于暂停状态时返回Activity,则系统会调用 onResume() (2)。

暂停Activity


当系统为您的Activity调用 onPause() 时,它从技术角度看意味着您的Activity仍然处于部分可见状态,但往往说明用户即将离开Activity并且它很快就要进入“停止”状态。 您通常应使用 onPause() 回调:

  • 停止动画或其他可能消耗 CPU 的进行之中的操作。
  • 提交未保存的更改,但仅当用户离开时希望永久性保存此类更改(比如电子邮件草稿)。
  • 释放系统资源,比如广播接收器、传感器手柄(比如 GPS) 或当您的Activity暂停且用户不需要它们时仍然可能影响电池寿命的任何其他资源。

例如,如果您的应用使用 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()中永久性存储用户更改。但您应避免在 onPause() 期间执行 CPU 密集型工作,比如向数据库写入信息,因为这会拖慢向下一Activity过渡的过程(您应改为在 onStop()期间执行高负载关机操作。

您应通过相对简单的方式在 onPause() 方法中完成大量操作,这样才能加快在您的Activity确实停止的情况下用户向下一个目标过渡的速度。

注意:当您的Activity暂停时,Activity 实例将驻留在内存中并且在Activity继续时被再次调用。您无需重新初始化在执行任何导致进入“继续”状态的回调方法期间创建的组件。

继续Activity


当用户从“暂停”状态继续您的Activity时,系统会调用 onResume() 方法。

请注意,每当您的Activity进入前台时系统便会调用此方法,包括它初次创建之时。 同样地,您应实现onResume() 初始化您在 onPause() 期间释放的组件并且执行每当Activity进入“继续”状态时必须进行的任何其他初始化操作(比如开始动画和初始化只在Activity具有用户焦点时使用的组件)。

onResume() 的以下示例对应于以上的 onPause() 示例,因此它初始化Activity暂停时释放的照相机。

@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
    }
}

简单开始,暂停,继续的倒计时实现

关于实现“倒计时”功能的代码(包括开始、暂停、继续功能): 1、首先在布局文件中添加一个TextView和Button控件,并在onCreate方法中获得到TextView和Button的id; ...
  • sinat_35201610
  • sinat_35201610
  • 2016年06月20日 23:39
  • 858

线程暂停和继续实现

开启一个子线程来显示发动机上的运行时间,如果发动机暂停运行,那么这个线程也会暂停,发动机又开动的时候,线程继续开启,数据也是连贯着的; Timer timer=new Timer();T...
  • u014492513
  • u014492513
  • 2017年02月24日 09:38
  • 464

Activity生命周期管理~ 暂停和继续Activity

暂停和继续Activity 上一课下一课 本课程将向您展示如何 暂停Activity继续Activity 您还应阅读 Activity 试一试 下载演示 ActivityLif...
  • aibieqing241
  • aibieqing241
  • 2016年06月01日 17:51
  • 228

MFC 线程的暂停与继续,请问如何做啊。新手

MFC 线程的暂停与继续,请问如何做啊。新手。新建线程hThread=CreateThread(NULL,0,(LPTHREAD_START_ROUTINE)Test,NULL,0,&ThreadID...
  • cjjwwss
  • cjjwwss
  • 2014年03月19日 10:00
  • 589

JS倒计时效果带暂停和继续

HTML DOM var h=0,m=0,s=0; var mytime=null; //开始倒计时 function doSubmit(){ h=documen...
  • zhoumengkang
  • zhoumengkang
  • 2013年01月03日 19:51
  • 2823

Android播放器为何暂停后继续播放却没有继续?

问题: 最近在做音乐播放器这个模块,发现一个问题,在点击暂停按钮后,歌曲是暂停了,但是再一次点击播放按钮后,歌曲并没有继续播放,而是重新播放了。 分析: 如果真的是按照网上的例子做好判断并且...
  • sunchaoenter
  • sunchaoenter
  • 2011年08月19日 11:31
  • 4509

Android Handler和ProgressBar实现进度条的开始,暂停,停止,后退和循环

一,涉及的handler类方法 1, post(Runnable r) Causes the Runnable r to be added to the message queue.将要执行的线...
  • qq1271396448
  • qq1271396448
  • 2018年01月15日 10:32
  • 30

LINUX 暂停、继续进程

2011-07-18 11:30:59|  分类: linux |字号 订阅 kill -STOP 1234 将该进程暂停。 如果要让它恢复到后台,用kill -CONT 1234 (很多在前...
  • wocjj
  • wocjj
  • 2012年06月05日 18:25
  • 812

java实现线程的暂停与继续(详解案例)

今天做了个简单的swt的计时器,带有秒表的计时器,实现了暂停与继续的功能,下面请看详细的代码:package com.wild.HomeWork02; import org.eclipse.swt....
  • Luo_da
  • Luo_da
  • 2016年07月19日 20:28
  • 2600

C# 线程的暂停和恢复的 实现

我们可以通过ManualResetEvent类来实现。 声明, 初始化时不执行private static ManualResetEvent _eventWorkList = new ManualRe...
  • muzizongheng
  • muzizongheng
  • 2013年07月10日 15:40
  • 4857
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:暂停和继续Activity
举报原因:
原因补充:

(最多只允许输入30个字)