首页 > 其他分享 >Activity及其生命周期

Activity及其生命周期

时间:2023-07-31 12:23:22浏览次数:39  
标签:生命周期 启动 创建 及其 模式 Task 实例 Activity

  Activity 是Android 用户界面的基础组件,它一般存放在任务栈(Task)中,  所以Activity是以栈的形式存放的,也就遵循先进后出的原则,也不支持重新排序。如果要改变Activtiy的顺序,只能根据压栈和出栈的操作来改变。

  当启动一个Application时,系统会默认创建一个对应的Task,用来存放根Activity。新启动的Activity 中,如果affinity属性相同,这些新启动的Activity就是存放在同一个Task里面。

  由于栈是一个先进后出的线性表,Activity在当前栈中的位置,就决定了Activity的状态。但是往往在开发过程中,为了简化一些流程,增强用户的体现。会启动栈中任一位置的一个Activity。通过在AndroidManifest文件中的属性android:launchMode来设置或者通过Intent的flag来设置。

  standard    【默认模式】    可以有多个相同的实例,也允许多个相同Activity叠加,绝大多数的Activity都是使用这个模式。

  singleTop   【栈顶复用模式】    如果要开启的Activity在任务栈的顶部已经存在,就不会创建新的实例,而是调用onNewIntent() 方法。如果不位于栈顶,就会创建新的实例,避免栈顶的Activity被重复的创建。 一般在通知栏点击收到通知后,需要启动一个Activity会使用到这个模式。可以避免多次点击启动多个Activity的情况。

  singleTask  【栈内复用模式 】   Activity只会在一个任务栈里面存在一个实例。如果要激活的Activity,在任务栈里面已经存在,就不会创建新的Activity,而是复用这个已经存在的Activity,调用onNewIntent() 方法,并且清空这个Activity任务栈上面所有的Activity。 一般App的主页会使用这个模式。 这个模式能保证在用户退出应用时所有的Activity都能销毁。

  singleInstance   【单一实例模式】   整个手机操作系统里面只有一个实例存在。在该模式下,我们会为目标Activity分配一个新的affinity,并创建一个新的Task栈,并且任务栈里面只有他一个实例存在。不同的应用去打开这个Activity共享公用的同一个Activity。 这个模式启动时会比较慢,切换效果不好,用户体现差。一般用于多个Appliation之间。  任何一个Activity 它都会有一个生命周期,包括 onCreate() (创建)、onStart()(已开始)、onResume()(已恢复)、onPause()(已离开)、onStop()(已停止)、onDestroy()(释放回调)

   应用与用户交互的状态是onResume() 已恢复状态,此状态用户可以在屏幕上看到显示的UI信息,并可以进行实际的操作。

 

标签:生命周期,启动,创建,及其,模式,Task,实例,Activity
From: https://www.cnblogs.com/xiaocai84/p/17593125.html

相关文章

  • React重新渲染的触发机制及其优化策略
    React是一个用于构建用户界面的JavaScript库,它的核心特点之一是使用虚拟DOM(VirtualDOM)来实现高效的组件渲染。那组件重新渲染的机制是如何呢?基于这些机制,如果进行优化呢?虚拟DOM是一个用JavaScript对象表示的DOM树,它可以在内存中快速地创建和修改,而不需要直接操作真实的DOM。React......
  • 线程的生命周期
    线程的生命周期1、线程的5个生命周期新建:刚使用new方法创建出来的线程;就绪:调用线程的start()方法后,线程处于等待CPU分配资源阶段,当线程获取到CPU资源后开始执行;运行:当就绪的线程被调度并获得CPU资源时,便会进入运行状态,run()方法定义了线程的操作和功能;阻塞:在运行状态的时候,可能......
  • - 通过结合前端页面实现ORM对数据的增删改查 - Django中如何创建表关系 - 一对一
    通过结合前端页面实现ORM对数据的增删改查案例:写一个页面,就是把数据库中的数据以表格的形式展示出来,然后在每一行的后面加两个按钮,分别是修改、删除的按钮1.首先在数据库创建一个表格1.在model.py中创建表格 2.pythonmanage.pymakemigratins迁移记录   3.......
  • 5_Spring_Bean的生命周期
    5_Spring_Bean的生命周期bean从创建到销毁经历的各个阶段以及每个阶段所调用的方法1通过构造器创建bean实例     执行构造器2为bean属性赋值            执行set方法3初始化bean                调......
  • 浅谈SQL注入及其防御方法
    昨晚跟学生们在群里讨论到什么是SQL注入的时候,硬挤出来了一个比喻.码字不易,特整理记录如下.  首先,电脑里面的语言分两种,编译型,解析型(脚本型).比如PHP就是解析型,C就是编译型.由于SQL语句可以在这两类语言下执行,所以为了充分明白是什么导致了SQL注入漏洞,我......
  • AIGC与NLP大模型实战-经典CV与NLP大模型及其下游应用任务实现
    点击下载:AIGC与NLP大模型实战-经典CV与NLP大模型及其下游应用任务实现提取码:hqq8当今社会是科技的社会,是算力快速发展的时代。随着数据中心、东数西算、高性能计算、数据分析、数据挖掘的快速发展,大模型得到了快速地发展。大模型是“大算力+强算法”相结合的产物,是人工智能的发展......
  • ORM对数据的增删改查,动静态网页,Django创建表关系,Django框架的请求生命周期流程图
    通过结合前端页面实现ORM对数据的增删改查#我让你写一个页面,就是把数据库中的数据以表格的形式展示出来,然后在每一行的后面加两个按钮,分别是修改、删除的按钮#表格的展示页面'''思考修改功能的逻辑:'''1、确定修改哪条记录,怎么确定?通过主键id确定唯一一条记录2、点击......
  • Vue2 & Vue3生命周期对比
    Vue2生命周期图示  Vue3生命周期图示  二者对比 ......
  • 易基因:m6A-seq等揭示RBM33参与调控m6A去甲基化酶ALKBH5活性及其底物选择性
    大家好,这里是专注表观组学十余年,领跑多组学科研服务的易基因。RNA结合蛋白(RNA-bindingprotein,RBP)是一类结构和功能多样化的蛋白质,参与多种生物过程。越来越多的证据表明,RBP通过调控编码或非编码RNA的可变剪接、转运、稳定性、降解和翻译,在基因表达的转录后调控中发挥着关键作用,......
  • 蒙特卡洛积分-重要性采样原理及其应用
    我自己是数学菜逼,所以我在学习数学之类的内容的时候,我基本上会去找视频看,虽然视频比较耗时间,但数学真的很难,没办法,菜逼一个。好在在b站上找到一位数学老师有这个视频讲解,真的救命呀!!!放下视频链接https://www.bilibili.com/video/BV17D4y1o7J2?p=1&vd_source=4451d7e9f1ccf3c1318002......