Back Stack与Activity

激活Activity与压栈

当Activity被激活时,它在Back Stack中压栈,成为栈顶Activity,则被显示且获得焦

点。

·以第一次启动某个应用程序为例:

大多数的Task以HOME界面,或应用程序界面作为起点,当用户击应用程序图标时,Task

被创建且置于前台,系统检索到入口Activity后在Back Stack中压栈,由Task是新创建的,

则此时Back Stack中只有一个

Activity,入口Activity即是栈顶Activity也是栈顶Activity,所以入口Activity被显示且

获得焦点。

保存Activity的状态

当同一个Task中,出现新的Activity压栈时,或当前Task被整体的闲置于后台时,原Task

栈顶的Activity

被停止时的状态将被保存。

例如:在某个应用程序的登录界面中,输入了用户信息,然后被来电中断,当通话结束后,

原登录界面中已经输入的信息依然存在。

注意:由于系统可能因为资源不足而销毁一些Activity,所以并不能保证当Task被置于后台

之后,再次回到前台时Activity的状态依然存在,因为很可能整个Activity都已经不存在了

.

Activity的销毁与出栈

当用户点击"Back"键时,栈顶的Activity出栈,一旦出栈,则该Activity被终止,且资源被

回收,即销毁。

Activity的状态与Back Stack

在Back Stack 中,Activity的状态可能为:

当新激活的Activity压栈,则成为栈顶Activity,该Activity处于运行态;

当用户点击“Back”键,栈顶Activity出栈,且被销毁,处于终止态;

在栈内,且不处于栈顶的Activity,可能处于暂停态,停止态,终止态。

Activity的生命周期方法

当激活Activity时:

配置为standard模式时,经历:

onCreate()->onStart()->onResume()

如果Activity已经置于前台,且不需要创建实例(singleTop模式,singeleTask模式,

singleInstance模式),则经历:

onPause()->onResume()

如果Activity已经被置于后台,且不需要创建实例(例如singleTask模式,singleInstance

模式),则经历:

onRestart()->onStart()->onResume()

强制出栈的Activity都会经历onDest``roy().

时间: 2024-08-24 02:49:56

Back Stack与Activity的相关文章

API翻译 --- Tasks and Back Stack

IN THIS DOCUMENT Saving Activity State  保存activity状态 Managing Tasks    管理任务 Defining launch modes 定义启动模式 Handling affinities 处理密切关系 Clearing the back stack 清除回退栈 Starting a task 启动任务 ARTICLES Multitasking the Android Way Android多任务方式 SEE ALSO Android

Activity 的介绍和使用(一)

Activity是什么 Activity是Android的四大组件之一.是用户操作的可视化界面:它为用户提供了一个完成操作指令的窗口.当我们创建完毕Activity之后,需要调用setContentView()方法来完成界面的显示:以此来为用户提供交互的入口.在Android App 中只要能看见的几乎都要依托于Activity,所以Activity是在开发中使用最频繁的一种组件. Activity的生命周期 在Android中会维持一个Activity Stack(Activity栈),当一个

2.App Components-Activities/Tasks and Back Stack

1. Tasks and Back Stack An application usually contains multiple activities. Each activity should be designed around a specific kind of action the user can perform and can start other activities. For example, an email application might have one activ

深入浅出API——Activity源码分析

/* * Copyright (C) 2006 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://w

庖丁解牛 Activity 启动流程

前言 这是 Android 9.0 AOSP 系列 的第五篇了,先来回顾一下前面几篇的大致内容. Java 世界的盘古和女娲 -- Zygote 主要介绍了 Android 世界的第一个 Java 进程 Zygote 的启动过程. 注册服务端 socket,用于响应客户端请求 各种预加载操作,类,资源,共享库等 强制 GC 一次 fork SystemServer 进程 循环等待客户端发来的 socket 请求(请求 socket 连接和请求 fork 应用进程) Zygote家的大儿子 --

android之Fragment(官网资料翻译)

Fragment要点 Fragment作为Activity界面的一部分组成出现 可以在一个Activity中同时出现多个Fragment,并且,一个Fragment亦可在多个Activity中使用. 在Activity运行过程中,可以添加.移除或者替换Fragment(add().remove().replace()) Fragment可以响应自己的输入事件,并且有自己的生命周期,当然,它们的生命周期直接被其所属的宿主activity的生命周期影响. 设计哲学 Android在3.0中引入了fr

Android 中MyApplication

package liu.basedemo; import android.app.Activity; import android.app.Application; import java.lang.ref.WeakReference; import java.util.Stack; /** * MyApplication应用 基本 * Created by 刘楠 on 2016/7/28 0028.21:45 */ public class MyApplication extends Appl

Google最新截屏案例详解

Google从Android 5.0 开始,给出了截屏案例ScreenCapture,在同版本的examples的Media类别中可以找到.给需要开发手机或平板截屏应用的小伙伴提供了非常有意义的参考资料,由于以前版本的API是隐藏的,要想开发一个截屏应用需要费一番心思且有局限性.当然了,这里说的截屏不是应用程序本身,而是包括状态栏在内的整个屏幕,不管当前运行的是什么程序,效果同按下手机自带截屏快捷键一样. 整个案例的源码就不在这里显摆了,相信感兴趣的朋友一定能找得到,其实整个工程很简单,而且在A

android内核剖析学习笔记:AMS(ActivityManagerService)内部原理和工作机制

一.ActivityManagerService提供的主要功能: (1)统一调度各应用程序的Activity (2)内存管理 (3)进程管理 二.启动一个Activity的方式有以下几种: (1)在应用程序中调用startActivity启动指定的Activity (2)在Home程序中单击一个应用图标,启动新的Activity (3)按"Back"键,结束当前Activity,返回到上一个Activity (4)长按"Home"键,显示出当前正在运行的程序列表,从