赞
踩
答:Activity一共有7个方法,这些方法和调用的时机具体如下:
①onCreate():Activity创建时调用,通常做一些初始化设置。
②onStart():Activity即将可见时调用。
③onResume():Activity获取焦点时调用。
④onPause():当前Activity被其他Activity覆盖或屏幕锁屏时调用。
⑤onStop():Activity对用户不可见时调用。
⑥onDestroy():Activity销毁时调用。
⑦onRestart():Activity从停止状态到再次启动时调用。
答:Activity的四种启动模式分别为standard、singleTop、singleTask和singleInstance,这些模式的特点具体如下:
①standard:每启动一个Activity就会在栈顶创建一个新的实例。
②singleTop:当被启动的Activity位于栈顶时,复用该Activity实例。
③singleTask:当被启动的Activity在栈中存在实例时,会直接复用此Activity实例,并把当前Activity上面的所有实例弹出栈。
④singleInstance:会启动一个新的任务栈来管理该Activity。
答:Activity表示活动,他是Android的四大组件之一,Intent表示意图,IntentFilter表示过滤器,他们的作用具体如下:
①Activity是一个负责与用户交互的组件,每个Android应用中都会用Activity来显示界面以及处理界面上一些控件的事件。
②Intent被称为意图,是程序中各组件间进行交互的一种重要方式,它不仅可以指定当前组件要执行的动作,还可以在不同组件之间进行数据传递。
③IntentFilter为过滤器,当发送一个隐式Intent后,Android系统会将它与程序中的每一个组件的过滤器进行匹配,匹配属性有 action、data、category,需要这三个属性都匹配成功才能唤起相应的组件。
Activity的生命周期指的是Activity从创建到销毁的整个过程,这个过程大致可以分为五种状态,分别是启动状态、运行状态、暂停状态、停止状态和销毁状态
Activity的启动状态很短暂,一般情况下,当Activity启动之后便会进入运行zhuangtai
Activity在此状态时处于界面最前端,是可见的有焦点的,可以与用户进行交互
当Activity处于运行状态时,Android会尽可能地保持这种状态,即使出现内存不足的情况,Android也会先销毁栈底的Activity,来确保当前Activity正常运行
对用户来说仍然可见,但是它无法获取焦点,用户对它操作没有响应
完全不可见时就处于停止状态,如果系统内存不足,那么这种状态下的Activity很容易被销毁
当Activity处于销毁状态时, 将被清理出内存
注:Acitivity生命周期的启动状态和销毁状态是过渡状态,Activity不会在这两个状态停留
Activity的生命周期包括创建、可见、获取焦点、失去焦点、不可见、重新可见、销毁等环节,针对每个环节Activity都定义了相关的回调方法
①onCreate(): Activity创建时调用,通常做一些初始化设置
②onStart():Activity即将可见时调用
③onResume():Activity获取焦点时调用
④onPause():当前Activity被其他Activity覆盖或屏幕锁屏时调用
⑤onStop(): Activity对用户不可见时调用
⑥onDestroy():Activity销毁时调用
⑦onRestart():Activity从停止状态到再次启动时调用
当程序中只有一个Activity时无法进行从停止状态到再次启动状态的操作
创建Activity可以使用Java类继承Activity的方式实现
创建的每个Activity都必须在清单文件AndroidManifest.xml中配置才能生效
Acitivity组件用activity标签表示,通过android:name的属性指定该Activity的名称
Intent intent=new Intent(MainActivity.this,SecondActivity.class);
startActivity(intent);
Intent用于相同或者不同应用程序组件间的绑定
Intent被称为意图,是程序中各组件间进行交互的一种重要方式,不仅可以指定当前组件要执行的动作,还可以在不同组件之间进行数据传递,一般用于启动Activity、Service以及发送广播等
直接指定目标组件,如启动Activity示例
不会明确指出需要激活的目标组件,被广泛地应用在不同应用程序之间传递消息
Android系统会使用IntentFilter匹配相应的组件,匹配的属性主要包括以下三个:
action:要完成的工作
data:传递的数据
category:为action添加的额外信息
当发送一个隐式Intent后,Android系统会将它与程序中的每一个组件的过滤器进行匹配,三个属性都匹配成功才能唤起相应的组件
action属性用来指定Intent对象的动作
intent-filter标签中可以罗列多个action属性,但是当使用隐式Intent激活组件时,只要Intent携带的action与其中一个intent-filter标签中的action声明相同,action属性就匹配成功
在清单文件中为Activity添加intent-filter标签时,必须添加action属性,否则隐式intent无法开启该activity
data属性用来指定数据的URI或者数据MIME类型,它的值通常与Intent的action属性有关联
intent-filter标签中可以罗列多个data属性,每个data属性可以指定数据的MIME类型和URI
隐式Intent携带的data数据只要与IntentFilter中的任意一个data声明相同,data属性就匹配成功
用于为action添加额外信息,一个IntentFilter可以不声明category属性,也可以声明多个category属性
隐式Intent中声明的category必须全部能够与某一个IntentFilter中的category匹配才算匹配成功
IntentFilter中罗列的category属性数量必须大于或者等于隐式Intent携带的category属性数量
如果一个隐式Intent没有设置category属性,那么他可以通过任何一个IntentFilter的category匹配
通过puExtra()方法将传递的数据存储在Intent对象后,如果想获取该数据,可以通过getXxxExtra()方法来实现
通过键值对的形式来保存数据
startActivityForResult方法用于开启一个Activity,当开启的Activity销毁时,希望从中返回数据,该方法中有2个参数,第一个参数intent表示意图,第二个参数requestCode表示请求码,用于标识请求的来源,如在MainActivity中点击两个按钮都跳转到SecondActivity,可以使用请求码标识判断是从哪个按钮跳转的
setResult方法用于携带数据进行回传,该方法中有2个参数,第1个参数resultCode表示返回码,用于标识返回的数据来自哪一个Activity。第2个参数intent表示用于携带数据并回传到上一个界面
用于接收回传的数据,并根据传递的参数requestCode、resultCode来识别数据的来源
在使用setResult方法之后,需要调用finish方法关闭SecondActivity,强制销毁SecondActivity,目的是为了跳转回MainActivity
setResult放只负责返回数据,没有跳转功能,finish可强行返回,MainActivity被销毁后程序会回调MainActivity的onActivityResult()方法来接收回传的数据
Android任务栈是一种用来存放Activity实例的容器
先进后出,两个基本操作,分别是压栈和出栈
通常Android应用都有一个任务栈,每打开一个Activity时,该Activity就会被亚茹任务栈,每销毁一个Activity时,该Activity就会被弹出任务栈,用户操作的Activity永远都是栈顶的Activity
每启动一个Activity就会在栈顶创建一个新的实例
Activity的默认启动方式
闹钟程序
该模式会判断要启动的Activity实例是否位于栈顶,如果位于栈顶则直接复用,否则创建新的实例
浏览器书签
每次启动该Activity时,系统首先会检查栈中是否存在当前Activity实例,如果存在则直接使用,并把当前Activity上面的所有实例全部弹出栈
浏览器主界面
会启动一个新的任务栈来管理Activity实例,无论从哪个任务栈中启动该Activity,该实例在整个系统中只有一个
Android中的桌面使用的就是该模式
开启使用singleInstance模式的Activity分两种情况:一种是开启的Activity实例在栈中不存在,则系统会先创建一个新的任务栈,然后再压入Activity实例;另一种是要启动的Activity已存在,系统会把Acitivity所在的任务栈转移到前台,从而使Activity显示
来电界面
Fragment(碎片)是一种嵌入在Activity中的UI片段,它可以用来描述Activity中的一部分布局
如果Acitivity界面布局中的空间比较多比较复杂,那么Activity管理起来就很麻烦,我们可以使用Fragment把屏幕划分成几个片段,进行模块化的管理,从而使程序更加合理和充分利用屏幕的空间
一个Activity中可以包含多个Fragment,一个Fragment也可以在多个Activity中使用,如果在Activity中有多个相同的业务模块,则可以复用Fragment
因为Fragment是被嵌入到Activity中使用的,因此它的生命周期的状态直接受其所属Activity的生命周期状态影响
创建Fragment时必须创建一个类继承自Fragment
Fragment创建完成后并不能单独使用,还需要将Fragment添加到Activity中
android:name属性值为Fragment的全路径名称
①创建一个Fragment的实例对象
②获取FragmentManager的实例
③开启FragmentTransaction
④向Activity的布局容器(一般是FrameLayout)中添加Fragment
⑤通过commit方法提交事务
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。