【Android-3】Android中的任务栈(Task)

一、Android任务栈

概述:Android中的任务栈其实就是Activity的集合,在Android中退出程序的时候必须把任务栈中的所有Activity清除出栈,此时才能安全的完全的退出程序,

任务栈销毁了才是处于数据最安全的状态,如果不去删除,则需要合理的保存这个任务栈,这样任务栈就保留了每个Activity的状态,也会保存Activity的信息,

任务栈也不一定是唯一的,一个Activity当中也不止一个任务栈,某些情况下,Activity也可独享一个任务栈(SingleInstance)。

二、Activity启动模式

1.Standrd(标准启动模式):该模式每次启动Activity都会重新创建一个Activity的实例,将它加入到任务栈当中,不会去考虑Task当中是否存在过这个实例了,

这样每创建一个实例都会走相应的生命周期方法。

2.SingleTop(栈顶复用模式):每次启动Activity都会判断是否存在栈顶,在栈顶就复用,不在栈顶依然会重新创建。

3.SingleTask(栈内复用模式):每次启动Activity的时候,会检测整个任务栈当中是否存在该Activity,存在就置于栈顶并把这个Activity之上的所有Activity从任务栈销毁。

4.SingleInstance:以该模式启动的Activity,会单独存在一个任务栈中,且只有它一个实例,独享一个任务栈。(该模式很少用)

原文地址:https://www.cnblogs.com/chapter/p/8525284.html

时间: 2024-10-12 20:47:09

【Android-3】Android中的任务栈(Task)的相关文章

android核心系列--2,关于任务栈(task)

一,任务 任务是由界面组件组成的一个栈,这些界面组件可以来自多个进程,多个应用,为共同完成一项任务而存在,比如写邮件时会用到邮件应用和联系人应用中的界面组件,这些界面组件在同一个任务中运行. 二,界面组件的运行模式 1,standard   标准模式,每次调用界面组件都会生成一个新的实例压入任务栈的栈顶. 2,singleTop ,对应 Activity_FLAG_ACTIVITY_SINGLE_TOP,如果当前界面组件在栈顶,则再次调用该界面组件时不会生成新的实例,而是直接使用栈顶的界面组件,

android开发——Android开发中的47个小知识

1.判断sd卡是否存在  boolean sdCardExist = Environment.getExternalStorageState().equals(android.os.Environment.MEDIA_MOUNTED); 2.TextView部分文字设置颜色 TextView tv = new TextView(this); //添加css样式 tv.setText(Html.fromHtml("<font color="#ff0000">红色&l

关于android studio 出现Error:Execution failed for task &#39;:app:buildInfoDebugLoader&#39;.的解决办法

今天在使用androidstudio的过程中,改了代码点击运行的时候发现android studio总是报 Error:Execution failed for task ':app:buildInfoDebugLoader'.> Exception while doing past iteration backup : Source /home/ruiqin/AndroidStudioProjects/DouTuGaoShou/app/build/intermediates/builds/de

Android manifest文件中的标签详细介绍

概要 每一个Android应用都应该包含一个manifest文件,即AndroidManifest.xml.它包含了程序运行的一些必备信息,比如: --为Java应用程序指定一个独一无二的名字. --描述程序所包括的成分,如activities, services, broadcast receivers和content providers等内容. --定义哪一个成分是主要的.比如主线程等. --声明程序正常运行所需要的权限.比如,读写SD卡等. --声明该程序的API Level,低于该API

Android系统简介(中):系统架构

Android的系统架构栈分为4层,从上往下分别是Applications.Application framework.Libraries  & Android Runtime.Linux  Kernel.每层提供不同的Service功能以供上层调用. 一:Linux Kernel(Linux 内核): 位于Android系统架构栈的底部,整个Android系统基于该层,最新的Android Kitkat 4.4基于Linux Kernel 3.8构建的.它提供的硬件设备抽象接口,以供其他架构层

在Android 5.0中使用JobScheduler

在Android 5.0中使用JobScheduler 原文链接 : using-the-jobscheduler-api-on-android-lollipop 译者 : Mr.Simple 校对者 : Mr.Simple 在这篇文章中,你会学习到在Android 5.0中如何使用JobScheduler API.JobScheduler API允许开发者在符合某些条件时创建执行在后台的任务. 介绍 在Android开发中,会存在这么些场景 : 你需要在稍后的某个时间点或者当满足某个特定的条件

Android的ImageView中的android:src和android:background的区别

http://www.androidren.com/index.php?qa=301&qa_1=android的imageview中的android-src和android-background的区别 有下面几个不同点: 1.src是前景foreground.background是后景background. 2.src是显示内容,background是背景. 3.background是所有view都有的属性,而src是ImageView特有的,它会受到android:scaleType的影响,而

浅析Android 5.0中多媒体相关的新特性

本文来源于本人在所属公司内部分享的一次培训内容,由于100%是AOSP开源内容,所以应该可以分享出来给大家. Android L是在今年2014年6月的Google I/O开发者大会上正式推出的,其中包含了诸多改进,包括新的Material Design交互设计,卡片式风格的通知栏,对64位和ART的支持等等,本文则重点关注一些多媒体相关的新特性. 由于Android L发布的时间仅有半年,无论国内还是国外的相关资料比较匮乏,很多内容本人只能是在Android developer网站中对L版本的

Android获取Manifest中&lt;meta-data&gt;元素的值

前些时间完成了游戏攻略项目的开发.里面用到了批量打包.不是网市场上提交,而是通过设置Manifest中的Meta_data>去获得相关参数,游戏ID号改变,游戏ID改变,然后游戏内容就改变.当时是把参数写在Activity中了.今天又查了些文件总结下. 被包含在<activity>.<application> .<service>和<receiver>元素中, 不同的父元素,在应用时读取的方法也不同.他们都有相关的Info读取. 1 :在Activit