4、Activity活动简介

  • 什么是Activity:
  • 如何创建Activity:
  • Activity启动方式:
  • Activity的生命周期:
  • 不同Activity之间数据的传递:

什么是Activity:

Activity是Android的四大组件之一,专门负责控制视图View与用户进行交互的活动类,在实际开发中使用频率最高的组件之一。(通俗来讲,activity就相当于界面,QQ界面、微信界面之类的)。

如何创建Activity:

Activity在创建时必须要在AndroidMainifest.xml文件中通过和标签进行注册,这样才能通过解析AndroidMainifest.xml文件中的标签找到对应的Activity进行启动。在Android studio或者eclipse中,如果通过想到方式进行创建activity,软件将会自动的在AndroidMainifest.xml文件中注册。若通过创建class的方式创建,则需要手动在AndroidMainifest.xml文件中注册。

Activity启动方式:

Activity的启动方式有4中,在不同的场景下在AndroidMainifest.xml的标签的“android:launchMode” 属性来指定启动模式,区分Activity启动方式的好处就是可以避免创建大量重复的Activity

在说明activity启动方式前,想要介绍一个概念叫做“任务栈”,每一个应用程序都有一个任务栈,用于存放activity,功能类似于函数的调用栈,不懂的小伙伴们可以自行百度。入栈的先后顺序代表了Activity的出现顺序。例如Activity的出现顺序为Activity1 -> Activity2 -> Activity3,则任务栈中的Activity顺序为:

有了任务栈的概念,我们就来看一下4种启动方式:

1、standard:每次激活activity都会创建一个activity实例,例如:源栈顶为activity2,再次激活activity2时,会再次创建一个activity2:

2、singleTop:若某个activity自己激活自己,即任务栈栈顶就是该activity,则不需要创建activity实例,其他情况则需要创建,如:

3、singleTask:如果要激活的activity已经存在在任务栈中,则不需要创建activity实例,只需要将此activity之上的所有实例出栈,让此activity置于栈顶即可,如:

4、singleInstance:此种启动模式用于多个application,当application1的任务栈已经激活了activity1,application也要激活activity1,则直接共享application1的任务栈中的activity1即可,如:

Activity的生命周期:

废话不多说,先看图:

下面我们来研究一下这张图中的7种activity方法:不废话,再来看图:

1、启动activity,调用onCreate()方法,然后调用onStart()方法,然后调用onReaume()方法,activity进入运行状态

2、当前activity被其他activity覆盖或者锁屏时,调用onPause()方法暂停当前activity

3、 当前activity由被覆盖状态回到前台或者解锁时系统调用onResume()方法,再次回到运行状态

4、当前activity转到新的activity界面或者按Home键回到主屏,自身退居后台时系统先调用onPause()方法,然后调用onStop()方法,进入停滞状态

5、用户后退回此activity,系统调用onRestart(),onStart(),onResume()方法,再次进入运行状态

6、当前activity处于被覆盖或者后台不可见状态(2和4),系统内存不足,杀死当前activity;然后用户又回到当前activity,则调用onCreate(),onStart(),onResume()方法,进入运行状态

7、用户退出当前activity,系统调用onPause(),onStop(),onDestory()方法,结束当前activity

不同Activity之间数据的传递:

由于内容较多,请看下节内容 android开发:4-2 不同Activity之间数据的传递、代码实例分析,不同Activity之间数据的传递,我会用实例代码进行分析

# android开发:4-1、Activity启动方式、生命周期、不同activity的数据传递相关推荐

  1. android同步服务启动,Android Service的基本用法(startService启动方式生命周期)

    概念:Service作为安卓的四大组件之一,并不像Activity一样,能够被我们看到.通常,它用于在后台为我们执行一些耗时,或者需要长时间执行的一些操作的.(可理解为没有界面的Activity) 使 ...

  2. 【Android】Activity启动与生命周期

    Activity启动流程 App进程是应用程序所在进程,主线程主要负责Activity/Service等组件的生命周期以及UI相关操作都运行在这个线程: 另外,每个App进程中至少会有两个binder ...

  3. android生命周期方法,Android零基础入门|Activity状态和生命周期方法

    原标题:Android零基础入门|Activity状态和生命周期方法 前面两期我们学习了Activity的创建和注册.以及启动和关闭,也学会了重写onCraete方法,这些知识在实际开发中远远不够,还 ...

  4. Android零基础入门第75节:Activity状态和生命周期方法

    前面两期我们学习了Activity的创建和注册.以及启动和关闭,也学会了重写onCraete方法,这些知识在实际开发中远远不够,还需要学习了解更多. 生命周期就是一个对象从创建到销毁的过程,每一个对象 ...

  5. android代理生命周期,了解 Activity 生命周期

    当用户浏览.退出和返回到您的应用时,您应用中的 在生命周期回调方法中,您可以声明用户离开和再次进入 Activity 时 Activity 的行为方式.例如,如果您正构建流媒体视频播放器,当用户切换至 ...

  6. 【Android 插件化】Hook 插件化框架 ( Hook Activity 启动流程 | 主线程创建 Activity 实例之前使用插件 Activity 类替换占位的组件 )

    Android 插件化系列文章目录 [Android 插件化]插件化简介 ( 组件化与插件化 ) [Android 插件化]插件化原理 ( JVM 内存数据 | 类加载流程 ) [Android 插件 ...

  7. Android Activity 以及 Application 生命周期

    在日常开发中(对又是日常开发).你会发现很多逻辑如果只有onCreate和onDestory完全不够用.所以稍微系统的了解一下Activity生命周期的相关知识,也很有必要. 本篇简单学习Androi ...

  8. android.cat 镜像,Android开发利器之pidcat安装方式

    介绍pidcat: pidcat 是Android届JakeWharton大神开发的一款命令行工具,堪称Android开发利器,它能方便Android程序猿捕获日志,过滤日志,定位程序问题,超级好用. ...

  9. 【Android】Service启动、生命周期

    service启动流程 startService方式 每个App进程中至少会有两个binder线程 ApplicationThread(简称AT)和ActivityManagerProxy(简称AMP ...

最新文章

  1. Xcode 5 Error CertUIFramework.axbundle
  2. Linux之 xstart调用 x11vnc远程图形化桌面
  3. 用3个IO口控制6个LED灯,怎么做到的?查理复用!
  4. H264学习_基本数据结构
  5. php数组合并字段,PHP数组按要求合并
  6. 有一分数序列求前20项和答案c语言,用c语言求解:有一分数序列2/1,3/2,5/3,8/5,13/8,21/13,…求这个数列的前20项之和....
  7. 隐式连接时,windows下VS(包括2005、2008等)下配置OpenCV动态库的步骤
  8. java编程常用软件
  9. 张俊芳电机学18章计算题以及答案
  10. VS2003安装包和方法
  11. 解决移动端点击响应速度慢的问题tap
  12. java项目笔记 - 第16章:坦克大战1.0
  13. Photoshop CC 2019软件安装教程
  14. echarts 仿支付宝基金七日年化折线图
  15. 友盟消息推送java服务端
  16. 2.管理者的分类与角色
  17. Git的简单使用——连接码云
  18. Mac min忘记登录密码
  19. 电子学会2022年9月青少年软件编程(图形化)等级考试试卷(二级)答案解析
  20. html 页面右侧浮窗 CSS,CSS实现广告右侧悬浮效果

热门文章

  1. 来了来了,HTML6展望!
  2. 薪酬最高十职位:工程师最吃香
  3. js json制表符报错_llhttp是如何使Node.js性能翻倍的?
  4. 陈润生院士:我给自己取了个微信名,叫“微不足道”
  5. 1.10 编程基础之简单排序 03 成绩排序 3分 python
  6. STM32H743+CubeMX-梳理MPU的设置
  7. STM32中GPIO_Mode--GPIO配置
  8. 查看此docker网络连接模式_Docker:网络模式详解
  9. ThinkPHP6项目基操(12.实战部分 验证码)
  10. C++工作笔记-对'xxxxx'未定义的引用的2种情况