Activity的基础知识(下)

作者&投稿:机崔 (若有异议请与网页底部的电邮联系)
~ 上篇总结了Activity的一些知识,现在继续对Activity的知识进行梳理,包括Activity直接传递数据,Activity的生命周期,Activity的启动模式等.
1.intent传递数据:
使用startActivity方法,intent的putExtra()方法,以键值对的形式传递数据,该方法有很多重载方法,可以根据传递数据的不同类型选择合适的方法.除了有putExtra()方法外,还有putExtras()方法,传递的参数是Bundle.

如果传递的是对象,这个对象要实现序列化,也就是实现Parcelable或者Serializable接口.
如果希望被启动的页面返回数据,需要使用startActivityForResult()方法,这个方法中需要设置访问号,用来区分不同的访问者.并且在启动页重写onActivityResult方法用来接收返回的数据,

2.两种情况下的Activity的生命周期.
正常情况下的生命周期,正常情况是指用户的正常操作下的Activity的生命周期.后面会分析异常情况下的生命周期.
onCreate: Activity第一次创建时候的回调,主要是在这个方法进行初始化工作,比如初始化控件和事件绑定工作.
onStart:Activity从不可见状态变成可见状态.
onResume:Activity变成前台,可以和用户交互.
onPause:Activity可见但是不能和用户交互.
onStop:Activity从可见变得不可见,成为后台Activity.
onDestroy:Activity销毁时调用.
onRestart:Activity从后台变成前台Activity.
在启动Activity和两个Activity之间跳转时,可以知道Activity的生命周期变化过程,有两个说明:(1)在两个Activity跳转时,第一个Activty的onPause,onStop方法和第二个Activity的生命周期方法调用时机.

第一个Activity先执行onPause方法,第二个Activity才能创建.这也就意味着在onPause方法中不能执行太耗时的操作,否则会影响第二个Activity的创建.在源码(ActivityStack)中有这样的注释:

(2)onStart和onResume,onPause和onStop这两对方法的实质不同处:onStart和onStop这两个方法是从Activity的可见性来区分的,onResume和onPause是从Activity是否处于前台,是否可以和用户交互来区分的,注意在onPause调用时Activity还是可见的,调用时机比如弹出dialog时,下面的Activity是可见的.这个时候调用的是onPause方法.
异常情况下Activity的生命周期:异常情况下是指资源相关配置发生变化或后台Activity被系统回收时Activity的生命周期.后台Activity被系统回收的情况比较难复现,在资源相关配置发生变化时和后台Activity被回收时的生命周期执行过程是一样的,比较容易复现的就是横竖屏切换时的生命周期执行过程.在 AndroidManifest的Activity组件下配置android:screenOrientation标签,当设置可以横竖方向随着方向感应器来调节时,在切换时会出现先销毁Activity再创建的过程.
过程:

在这种情况下有可能会有数据的丢失,系统提供用来保存数据和还原数据的方法:onSaveInstanceState和onRestoreInstanceState.用方法参数Bundle可以保存和还原数据.

可以根据需要设置android:screenOrientation标签,设定activity的方向,如果activity的方向是需要横竖屏切换,但是不容许销毁Activity,可以设置如下标签,当这些情况(常用的)发生变化是不会重新走Activity的生命周期方法,只会调用onConfigurationChanged,可以根据情况在这个方法里更新操作.

切换时的log输出

3.Activity的四种启动模式
标准:是Activity的默认启动模式,对于AndroidManifest的Activity节点下的android:launchMode="standard"标签.
特定:每次启动都会重新创建新的Activity.
singleTop:对应的AndroidManifes的Activity节点下的android:launchMode="singleTop"标签
特点:当此模式的Activity处于栈顶时,不会重新创建新的Activity,会调用onNewIntent方法,如果更新Activity的intent,需要调用 setIntent()方法,具体的生命周期过程

singleTask:在activity栈中已经有需要再启动的activity时,会先清除位于需要启动activity之上的activity,例如:启动顺序mainActivity-activityA -activityB-activityA,其中activityA是singleTask的启动模式:

singleInstance:在一个栈中单独存在的activity.
关于activity栈:是指用来管理activity一种"先进先出"的队列结构,查看activity对应栈的方法:Activity的getTaskId()方法,同一个栈的id值是相同的.adb shell dumpsys activity在终端查看栈结构,比如还是上面的activity启动顺序,不同是ActivityA这是设置成singleInstance,这是的栈结构:有两个TaskRecord,其中ActivityB和MainActivity位于同一个栈中.

4.Activity开发中使用技巧:
<1>定义一个父Activity,在创建新的Activity时继承这个activity即可,将一些activity的公共设置可以设置在父activity中,比如获取每个Activity的名字,设置activity的窗体属性,同一管理activity的生命周期等,
<2>在启动的activity中定义静态方法,启动条件会显而易见:

<3>管理activity类,用来一键退出app.在父类Activity的创建和销毁时用来添加和移除Activity,在需要一键退出的地方调用静态finishAllActivity方法.


活动的英文是什么
Activity的基本含义之一是指一系列的动作或行为,这些行为可能是有目的的,也可能是无目的的。在日常生活和工作中,人们会参与各种各样的活动,如体育活动、社交活动、文化活动等。这些活动构成了人们的生活内容,丰富了人们的生活体验。此外,在学术或专业领域,如生物学、心理学等,Activity也可能指的是某...

Android为什么要创建Activity基类以及Activity基类中一般有哪些方法_百 ...
1、创建基类的原因:根本原因就是要减少重复的代码。2、有哪些方法:比如你的每个activity上都要显示时间,你就可以把这个做到基类里去。然后每个activity都继承基类,就都有时间了不用各个都写。所以基类里就是写共用的方法。这样 的好处首先代码量少了,第二维护的时候方便,比如时间出了问题,就只需要...

activity有积极的意思吗
activity没有积极的意思。activity的基本意思是“活动性,活力”,指人或事物本身所固有的活力,此时为不可数名词。activity也可指人们为了达到某种目的而从事“繁忙的〔充满活力的〕活动”或“工作,消遣”等,此时activity为可数名词,常用于复数形式。短语:physical activity 身体活动,体育活动;体力活动 o...

活动手册用英语怎么说
1、activity的基本意思是“活动性,活力”,指人或事物本身所固有的活力,此时为不可数名词。2、activity也可指人们为了达到某种目的而从事“繁忙的〔充满活力的〕活动”或“工作,消遣”等,此时activity为可数名词,常用于复数形式。3、复数形式的acticities有“活动(范围)”的意思,如social activities,scho...

activity什么意思
Activity的意思是活动或行动。以下是详细解释:一、Activity的基本含义 Activity一词通常用来描述一系列的动作或行为,这些行为可以是物理的,也可以是心智的。在物理学中,它指的是物体的运动或行为;在心理学领域,它指的是人的心理过程或行为表现。此外,在日常用语中,Activity也可用来描述某种特定的活...

英文SPORT是什么意思
形容词: sportful 副词: sportfully 名词: sportfulness 过去式: sported 过去分词: sported 现在分词: sporting 第三人称单数:sports 词语用法 n.(名词)1、sport的基本意思是“运动”,引申可作“娱乐,消遣,游戏”解,既可用作可数名词,也可用作不可数名词,英式英语多用sport,美式英语多用sports,表示...

activity的词性转换是什么?
activity n活动,活跃,活动性;(activities)activity的基本意思是“活动性,活力”,指人或事物本身所固有的活力,此时为不可数名词。activity也可指人们为了达到某种目的而从事“繁忙的〔充满活力的〕活动”或“工作,消遣”等,此时activity为可数名词,常用于复数形式。复数形式的acticities有“活动(范围)”...

activity是什么意思
Activity的意思是活动或行动。以下是详细的解释:一、基本定义 Activity一词通常用来描述一系列的动作或行为,这些行为可以涵盖一系列的动作和事件,这些事件按照一定的顺序和时间轴发生和发展。这个词可以用于描述日常生活中的各种行为,如体育活动、文化活动、工作或学校中的活动等等。例如,一个学生在学校的...

“活动”的英语意思是什么
“活动”的英语意思是“activity”。详细解释 1. 基本词义:“活动”这个词在中文中常用来描述一系列的动作或事件。当这个词转换到英语中,通常使用“activity”来表示。2. 在不同语境下的含义:在日常用语中,“activity”可以表示任何形式的活动,如体育活动、社交活动、课外活动等。在学术或专业领域中...

action和activity有什么具体的区别
又到了为小伙伴们解惑的时候了 (*❦ω❦),action是有目的和主动控制的动作;activity包括有目的的动作和自然活动。这里就给大家总结了一个它们基础知识的表格,可以先简单了解一下先: 了解完action和activity的基础知识后,现在就来看看它们的具体区别~(@^_^@)~ 1、定义不同 Action指有意识的行为,强调动作执行...

山阳县15593116848: activity是什么意?com.bilin.huijiao.a
解法安卡: 这个是安卓系统里使用的网址.如果你要用普通电脑访问,网址就是 activity.huijiao.bilin.com

山阳县15593116848: 体力活动的概念是什么?
解法安卡: 体力活动(physical activity)概念是指包括在工作、家务、交通行程期间或在休闲时间内由骨骼肌活动所引起的、能消耗能量的任何身体运动.美国卫生总署(USSG)1996年推荐的标准足:“每个成年人在一周的每一天或绝大部分天内都应该有累计30分钟的中等强度的体力活动”.若以控制体重为目的,特别是对那些从事静坐职业者,则“一周的每一天都要有60分钟的体力活动”. 以上是我对于这个问题的解答,希望能够帮到大家.

山阳县15593116848: Activity的生命周期,你真的了解了吗 -
解法安卡: 在Activity的生命周期中有很多的回调方法,系统调用Activity中的这些回调方法,就像是爬一个阶梯.而这些回调方法就相当于阶梯的每一层.当系统创建了一个新的Activity实例,回调方法一层一层的从最低层爬到最高层,也就是Resumed().到...

山阳县15593116848: activity生命周期可以忽略的是哪几个
解法安卡: 在android中,Activity拥有四种基本状态:Active/Runing一个新Activity启动入栈后,它在屏幕最前端,处于栈的最顶端,此时它处于可见并可和用户交互的激活状态.Paused当Activity被另一个透明或者Dialog样式的Activity覆盖时的状态.此时它依然与窗口管理器保持连接,系统继续维护其内部状态,所以它仍然可见,但它已经失去了焦点故不可与用户交互.Stoped当Activity被另外一个Activity覆盖、失去焦点并不可见时处于Stoped状态.KilledActivity被系统杀死回收或者没有被启动时处于Killed状态.

山阳县15593116848: 活动理论的内容 -
解法安卡: 活动理论起源于康德与黑格尔的古典哲学,形成于马克思辩证唯物主义,被维果斯基提出,成熟于前苏联心理学家列昂捷夫与鲁利亚,是社会文化活动与社会历史的研究成果.活动理论强调了活动在知识技能内化过程中的桥梁性作用.活动构成...

山阳县15593116848: 如何详解 Activity 的生命周期 -
解法安卡: 如何详解 Activity 的生命周期 Android官方文档里对Activity的生命周期有比较详尽的描述,但由于资源回收机制带来不确定性,我们的程序运行结果常常与预期的不符,而调试这类问题又十分消耗时间和精力.解决的根本办法还是要理解透...

山阳县15593116848: android面试介绍一下activity的生命周期, -
解法安卡: activity主要生命周期的方法说明: onCreate(Bundle savedInstanceState):创建activity时调用.设置在该方法中,还以Bundle的形式提供对以前储存的任何状态的访问!onStart():activity变为在屏幕上对用户可见时调用.onResume():activity开...

山阳县15593116848: Android中的activity的堆栈有什么作用 -
解法安卡: Android是通过将之前的activity组件和新被激活的activity组件放入同一个任务栈来实现这个功能的.从用户的角度看,一个任务栈就代表了“一个应用程序”.它实际上是一个栈,里面放着一组被排列好的相关的activity组件.位于栈底的activity(...

山阳县15593116848: 请教高人,能说下activity四种启动模式的应用场景吗 -
解法安卡: 当应用运行起来后就会开启一条线程,线程中会运行一个任务栈,当Activity实例创建后就会放入任务栈中.Activity启动模式的设置在AndroidManifest.xml文件中,通过配置Activity的属性android:launchMode=""设置.1. Standared模...

山阳县15593116848: android中的activity的启动方式有哪几种 -
解法安卡: Activity启动模式有4种,分别为standard、singleTop、singleTask、singleInstance.1.standard 默认模式,可以不用写配置.在这个模式下,都会默认创建一个新的实例.因此,在这种模式下,可以有多个相同的实例,也允许多个相同Activity叠...

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网