暂停和重新占有一个Activity

在正常的app使用时,前台的activity有时被其他课时的组建所受阻而暂停。例如,当一个半透明的activity打开(诸如一个该样式的对话框),activity就会暂停。只要是部分可见但目前仍未获得焦点的activity,它保持暂停状态。

然而,一旦activity完全被阻塞和不可见时,它会停止(这将在下一课讨论)。

当你的activity进入暂停状态,系统在你的activity中调用onPause()方法,,你可以停止正在进行的行为,不应该继续而停了下来(如视频)或保存任何应永久保存的信息,以防用户继续离开应用程序。如果用户从暂停状态返回到你的activity,系统恢复它并调用onResume()方法。

图解:当一个半透明的activity掩盖了你的activity,系统调用onPause()方法,并在(1)处等待。如果用户返回到该activity,而它仍处于(1)的状态,系统调用onResume()方法(2)

暂停你的Activity



当系统为你的activity调用onPause()方法时,这在技术上意味着你的活动仍是部分可见,但大多数情况下是用户要离开你activity的迹象,它会很快进入停止状态。通常你应该使用onPause()方法去:

(1)停止当前的动画效果或者其他消耗CPU的行为

(2)提交为保存的修改,但前提是用户希望被永久修改(eg:未发送的邮件)

(3)释放系统资源,eg:broadCatdReceivers,GPS,以及一切会影响你电量和CPU的操作,前提是接下来的操作你的用户不再需要它们

例如,如果你的应用程序使用相机时,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()当你某些用户期望的变化自动保存(例如当起草一封电子邮件)。然而,你应该避免在cpu密集工作期间调用onPause(),如写入数据库,因为它会减缓过渡到下一个activity的速度(您应该在onStop()中执行重载关闭操作)。

你应该保持onPause()方法完成相对简单的操作,以保证在程序停止时快速过渡到用户的下一个目的地。

重新占有你的Activity



当用户从暂停状态重新回到activity,系统调用onResume()方法。

请注意,每次你的activity进入前景时系统会调用这个方法,包括第一次创建的时候。因此,你应该实现onResume()来初始化你在onPause()中释放的组件并且做一些每次进入Resumed状态时都会发生的初始化的工作(如开启一个动画和当用户获得焦点时要初始化的组件)

下面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

}

}

时间: 2024-10-17 13:22:12

暂停和重新占有一个Activity的相关文章

Android官方入门文档[13]暂停和恢复一个Activity活动

Android官方入门文档[13]暂停和恢复一个Activity活动 Pausing and Resuming an Activity暂停和恢复一个Activity活动 This lesson teaches you to1.Pause Your Activity2.Resume Your Activity You should also read?Activities 这节课教你1.暂停您的Activity活动2.恢复您的Activity活动 你也应该阅读?Activity活动 Try it

【Android开发-8】生命周期,Activity中打开另外一个Activity

前言:生命中有许多人陪伴自己走过一生中的某段旅程,只是有些人只是某阶段出现,有些人却陪伴自己很久.就像小学.中学.高中.大学,那些曾经以为会长久拥有的,当经历过天涯各地地忙碌于生活,或如意,或失意:渐渐地那些画面只剩回忆.天涯各自安命,能在一起的就尽力珍惜吧,不在一起地就衷心地祝福,我们都需要一种姿态生活下去!Android中的Activity的生命中,我们经常需要打开另外一个Activity,即另外一个界面.这个可能出现的时间很短暂,然后又回到主界面.但是这两个Activity都在各自的生命周

Android官方入门文档[14]停止和重新启动一个Activity活动

Android官方入门文档[14]停止和重新启动一个Activity活动 Stopping and Restarting an Activity停止和重新启动一个Activity活动 This lesson teaches you to1.Stop Your Activity2.Start/Restart Your Activity You should also read?Activities 这节课教你1.停止您的Activity活动2.启动/重新启动您的Activity活动 你也应该阅读?

无废话Android之smartimageview使用、android多线程下载、显式意图激活另外一个activity,检查网络是否可用定位到网络的位置、隐式意图激活另外一个activity、隐式意图的配置,自定义隐式意图、在不同activity之间数据传递(5)

1.smartimageview使用 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent"

自定义ListView的点击Item项后进入另一个activity背景色改变在pressed或selected等状态时的颜色

在点击进入另一个activity时颜色改变是想在游戏攻略中实现的,但查资料找不到结果,今天突发灵感终于实现了. 我们大多数情况下都是自己写adapter,在写的那个Class中定义一个 boolean 型的 IsJump.然后在 OnItemClickListener 中 把 IsJump 设置为ture,再adapter2.notifyDataSetChanged();  在Adapter中 ture 的情况设置一种颜色就解决问题标记是否读过了.' 自定义ListView的Item项在pres

一个Activity调用另一个Activity的非静态方法

注意:前提是界面二被打开过未关闭,则用此方法即可实现在界面一中调用界面二的方法! 界面一: public class OneActivity extends Activity { @Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_one); callTwoActivityMethod(); } /

创建一个activity

在了解Android项目的文件结构后,接下来的是创建一个Activity.一个Android程序是很多个Activity组成的,它是android程序一个非常重要的组成部分之一,如何创建一个Activity?下面简单介绍如何创建一个Activity. 一,创建一个继承自Activity的Java类; package com.androidwhy; import android.app.Activity; import android.os.Bundle; public class HelloAc

Android开发:向下一个activity传递数据,返回数据给上一个activity

1.向下一个activity传递数据 activity1 1 Button button=(Button) findViewById(R.id.button1); 2 button.setOnClickListener(new OnClickListener() { 3 4 @Override 5 public void onClick(View v) { 6 Intent intent=new Intent("1111111111111111111"); 7 intent.addCa

Android_打开多个Activity,返回到第一个Activity

正文 一.流程截图 二.问题说明 依次从登录到三级界面,然后退出回到登录界面. 三.解决办法 3.1 实现代码 三级界面调用如下代码: Intent intent = new Intent(context, LoginView.class);        intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);        context.startActivity(intent); 3.2 代码说明 如果intent对象包含FLAG_ACTIVITY