文章目录

  • I . 返回堆栈 概念
  • II . 返回堆栈 运行机制
  • III . 任务

I . 返回堆栈 概念


返回堆栈概念 :

① 任务 : Android 中的任务就是 Android 应用 与 用户进行交互的 Activity 界面集合 ;

② 返回堆栈 : 将 Activity 界面依次放入 一个 堆栈 数据结构中 , 这个堆栈就是 返回堆栈 ;

③ 作用 : 返回堆栈的作用是 管理 Android 不同层级界面的打开关闭顺序 ;

注意 : 任务是多个 Activity , 不是一个 ;

II . 返回堆栈 运行机制


返回堆栈 运行机制 :

① 根 Activity : 用户在 Launcher 应用中 , 即主屏幕界面 , 没有打开任何应用 ; 此时点击应用图标 , 启动应用 , 如果该应用没有被打开过 , 系统就会创建一个新的 返回堆栈 , 这个应用的 Main Activity 就会作为该 返回堆栈的 根 Activity , 放在堆栈的最底部 ;

② 入栈 和 出栈 : 返回堆栈 只有入栈 和 出栈 两个操作 , 入栈 很容易理解 , 就是打开一个界面 , 堆栈的管理主要是对出栈进行管理 , 出栈可以退出 一个 或 多个 , 不同的操作和配置 会弹出数量不等的 Activity , 这是 返回堆栈 管理的核心 ;

返回堆栈 , 不会有排序行为 , 只有 入栈 和 出栈 两种操作 ;

③ 入栈原理 : 在 Activity 1 中启动 Activity 2 , 后者就会入栈 , 放到返回堆栈的栈顶 , 之前的 Activity 1 仍然会滞留在 返回堆栈 中 , 状态处于 “已停止” 状态 ; 下图是 连续 启动 3 个 Activity 后的返回堆栈 示例图 :

④ 出栈原理 : 用户按下返回键时 , 返回堆栈 栈顶的元素就会被 弹出堆栈 , 该 Activity 会被销毁 , 上一个 Activity 会恢复 ; 下图是在上面入栈的基础上 , 按下返回键 , 将 Activity 3 弹出了返回堆栈 ;

⑤ 全部出栈 : 如果用户连续按返回键 , 直到回到主界面 , 此时该应用的所有 Activity 都退出了 , 任务随着 返回堆栈 的退栈清空 而 销毁 ;

III . 任务


1 . 任务简介 :

① 任务本质 : 任务是 Activity 界面集合 ;

② 后台任务 : 用户打开新的应用 , 或 按下了 Home 键 , 会导致原来的 任务 转变成 “后台任务” ;

③ 后台任务 返回堆栈 : 任务进入后台 , 其 返回堆栈不会改变 , 堆栈中的 Activity 全部进入 “已停止” 状态 ;

④ 后台任务 转为 前台 : 当用户按下 Home 键 进入主界面 , 点击菜单键 , 选择原来的应用 ( 不同手机操作不同 ) , 该后台任务就会转为前台任务 , 其返回堆栈中的 Activity 会保持进入后台的状态 ;

注意 : 后台任务中的 Activity , 可能会因为内存紧张被销毁 ;

2 . Activity 实例化多次问题 : 如果某个 Activity 可以从多个 Activity 中启动 , 堆栈中会出现多个相同的 Activity , 该 Activity 被实例化了多次 , 可以通过设置启动模式 , 避免此类问题 ;

【Android 应用开发】Android 返回堆栈 与 任务相关推荐

  1. android view 点击变暗,Android应用开发Android ImageView点击变暗效果

    本文将带你了解Android应用开发Android ImageView点击变暗效果,希望本文对大家学Android有所帮助. < 自定义ImageView: 在ImageView中setPres ...

  2. android显示二维毫秒,Android应用开发Android 悬浮窗显示毫秒级时间

    本文将带你了解Android应用开发Android 悬浮窗显示毫秒级时间,希望本文对大家学Android有所帮助. Android   悬浮窗显示毫秒级时间Android 悬浮窗显示毫秒级时间. 运行 ...

  3. android ble 设备扫描程序,Android应用开发Android 7.0 BLE scan 问题:程序无错但扫描不到BLE设备...

    本文将带你了解Android应用开发Android 7.0  BLE scan 问题:程序无错但扫描不到BLE设备,希望本文对大家学Android有所帮助. < 最近在做毕设,需要几周内从头学起 ...

  4. android studio socket 失败,Android应用开发Android Studio建立Socket连接失败解决方法

    本文将带你了解Android应用开发Android Studio建立Socket连接失败解决方法,希望本文对大家学Android有所帮助. < Android Studio建立Socket连接失 ...

  5. android落下动画,Android应用开发android 购物车小球掉落动画

    本文将带你了解Android应用开发android 购物车小球掉落动画,希望本文对大家学Android有所帮助. 先贴效果图 对自定义View小红球的绘制 public class BallView ...

  6. android baseactivity,Android应用开发Android通过BaseActivity获取到当前启动的Activity名称...

    本文将带你了解Android应用开发Android通过BaseActivity获取到当前启动的Activity名称,希望本文对大家学Android有所帮助. < 在BaseActivity的on ...

  7. android 防止重复启动app,Android应用开发Android 防止启动页面(SplashActivity)被多次启动...

    本文将带你了解Android应用开发Android 防止启动页面(SplashActivity)被多次启动,希望本文对大家学Android有所帮助. 话不多说直接上代码: @Override prot ...

  8. android studio获取数字签名,Android应用开发Android Studio数字签名打包apk图文步骤教程...

    本文将带你了解Android应用开发Android Studio数字签名打包apk图文步骤教程,希望本文对大家学Android有所帮助. Android Studio数字签名打包release版apk ...

  9. android修改用户名和密码错误,Android应用开发Android Studio 修改用户名、密码、URL等操作教程...

    本文将带你了解Android应用开发Android Studio 修改用户名.密码.URL等操作教程,希望本文对大家学Android有所帮助. 修改用户名.密码: 在AndroidStudio的ter ...

  10. android程序突然崩溃如何调试,Android应用开发android 调试崩溃Unable to instantiate application的解决方法...

    本文将带你了解Android应用开发android 调试崩溃Unable to instantiate application的解决方法,希望本文对大家学Android有所帮助. 更新后Android ...

最新文章

  1. 御用导航官方网站提醒提示页_导航错误致四川青城山拥堵?交警提醒:别过度依赖导航...
  2. java 小波去噪原理_小波去噪的基本知识
  3. python如何开发小软件-Python程序员,如何快速开发一个小程序
  4. 揭示垃圾收集暂停的时间长度
  5. java 两个窗口 贴_粘贴子窗体中的多个记录时的子窗体校准错误
  6. Berenson机器人艺术鉴赏家亮相切尔西画廊
  7. SSM框架搭建+easyui增删改查
  8. 无需安装Oracle,用PL/SQL直接连接Oracle服务器
  9. 对于初学者,如何轻松学习JavaScript?
  10. BP神经网络和支持向量机在R语言中的实现
  11. web.config中特殊字符的处理
  12. 以太坊智能合约部署与交互
  13. 你不懂之-- 什么是源型 漏型?什么是上拉电阻?下拉电阻?什么是 线驱动输出 集电极开路输出,推挽式输出?
  14. 苹果将在圣诞节期间停止App Store审核:因为休假
  15. 微信隐藏功能:群接龙
  16. c语言printf输出整数数字,C语言 念数字 输入一个整数,输出每个数字对应的拼音。当整数为负数时,先输出fu字...
  17. Unity 之 Physics 二
  18. Zhong__安装配置MySQL8.0
  19. STM32工程模板文件夹
  20. 解决邮件标题乱码问题

热门文章

  1. koa2+vue实现登陆以及是否登陆控制
  2. saltstack执行state.sls耗时长的坑
  3. node中npm安装模块的网络问题
  4. SqlServer跨集群升级
  5. sed编辑器: 非交互
  6. App项目内存优化计划
  7. 查询数据(使用聚合函数,还是单表)
  8. fullcaledar日历插件
  9. 为什么程序员不擅长估算时间?
  10. C# ToString()方法