activity(Android组件中最重要的四大组件之一)详细资料大全

 我来答
户如乐9318
2022-11-05 · TA获得超过6657个赞
知道小有建树答主
回答量:2559
采纳率:100%
帮助的人:139万
展开全部

activity是Android组件中最基本也是最为常见用的四大组件之一。Android四大组件有Activity,Service服务,Content Provider内容提供,BroadcastReceiver广播接收器。

基本介绍

  • 外文名 :Activity
  • 定义 :Android系统组件
概要说明,详细说明,基本状态,状态转换,方法通知,

概要说明

Activity是Android组件中最基本也是最为常见用的四大组件(Activity,Service服务,Content Provider内容提供者,BroadcastReceiver广播接收器)之一。 Activity是一个应用程式组件,提供一个萤幕,用户可以用来互动为了完成某项任务。 Activity中所有操作都与用户密切相关,是一个负责与 用户互动 的组件,可以通过setContentView(View)来 显示指定控制项 。 在一个android套用中,一个Activity通常就是一个单独的萤幕,它上面可以显示一些控制项也可以监听并处理用户的事件做出回响。Activity之间通过Intent进行通信。

详细说明

基本状态

在android 中,Activity 拥有四种基本状态:
  1. Active/Running
一个新 Activity 启动入栈后,它显示在萤幕最前端,处理是处于栈的最顶端(Activity栈顶),此时它处于可见并可和用户互动的激活状态,叫做活动状态或者运行状态(active or running)。 2 . Paused 当 Activity失去焦点, 被一个新的非全萤幕的Activity 或者一个透明的Activity 被放置在栈顶,此时的状态叫做暂停状态(Paused)。此时它依然与视窗管理器保持连线,Activity依然保持活力(保持所有的状态,成员信息,和视窗管理器保持连线),但是在系统记忆体极端低下的时候将被强行终止掉。所以它仍然可见,但已经失去了焦点故不可与用户进行互动。 3 . Sped 如果一个Activity被另外的Activity完全覆盖掉,叫做停止状态(Sped)。它依然保持所有状态和成员信息,但是它不再可见,所以它的视窗被隐藏,当系统记忆体需要被用在其他地方的时候,Sped的Activity将被强行终止掉。 4 . Killed 如果一个Activity是Paused或者Sped状态,系统可以将该Activity从记忆体中删除,Android系统采用两种方式进行删除,要么要求该Activity结束,要么直接终止它的进程。当该Activity再次显示给用户时,它必须重新开始和重置前面的状态。

状态转换

当一个 Activity 实例被创建、销毁或者启动另外一个 Activity 时,它在这四种状态之间进行转换,这种转换的发生依赖于用户程式的动作。下图说明了 Activity 在不同状态间转换的时机和条件: 图1. Activity 的状 态转换 如上所示,Android 程式设计师可以决定一个 Activity 的“生”,但不能决定它的“死”,也就是说程式设计师可以启动一个 Activity,但是却不能手动的“结束”一个 Activity。当你调用 Activity.finish() 方法时,结果和用户按下 BACK 键一样:告诉 Activity Manager 该 Activity 实例完成了相应的工作,可以被“回收”。随后 Activity Manager 激活处于栈第二层的 Activity 并重新入栈,同时原 Activity 被压入到栈的第二层,从 Active 状态转到 Paused 状态。例如:从 Activity1 中启动了 Activity2,则当前处于栈顶端的是 Activity2,第二层是 Activity1,当我们调用 Activity2.finish() 方法时,Activity Manager 重新激活 Activity1 并入栈,Activity2 从 Active 状态转换 Sed 状态, Activity1. onActivityResult(int requestCode, int resultCode, Intent data) 方法被执行,Activity2 返回的数据通过 data 参数返回给 Activity1。 Activity栈 Android 是通过一种 Activity 栈的方式来管理 Activity 的,一个 Activity 的实例的状态决定它在栈中的位置。处于前台的 Activity 总是在栈的顶端,当前台的 Activity 因为异常或其它原因被销毁时,处于栈第二层的 Activity 将被激活,上浮到栈顶。当新的 Activity 启动入栈时,原 Activity 会被压入到栈的第二层。一个 Activity 在栈中的位置变化反映了它在不同状态间的转换。Activity 的状态与它在栈中的位置关系如下图所示: 图2. Activity 的状 与它在 中的位置 如上所示,除了最顶层即处在 Active 状态的 Activity 外,其它的 Activity 都有可能在系统记忆体不足时被回收,一个 Activity 的实例越是处在栈的底层,它被系统回收的可能性越大。系统负责管理栈中 Activity 的实例,它根据 Activity 所处的状态来改变其在栈中的位置。

方法通知

下面的图显示了Activity的重要状态转换,矩形框表明Activity在状态转换之间的回调接口,开发人员可以重载实现以便执行相关代码,带有颜色的椭圆形表明Activity所处的状态。 3 . Activity 的状 转换的方法和实现 在上图中,Activity有三个关键的循环: 1. 整个的生命周期,从onCreate(Bundle)开始到onDestroy()结束。Activity在onCreate()设定所有的“全局”状态,在onDestory()释放所有的资源。例如:某个Activity有一个在后台运行的执行绪,用于从网路下载数据,则该Activity可以在onCreate()中创建执行绪,在onDestory()中停止执行绪。 2. 可见的生命周期,从onStart()开始到onS()结束。在这段时间,可以看到Activity在萤幕上,尽管有可能不在前台,不能和用户互动。在这两个接口之间,需要保持显示给用户的UI数据和资源等,例如:可以在onStart中注册一个IntentReceiver来监听数据变化导致UI的变动,当不再需要显示时候,可以在onS()中注销它。onStart(),onS()都可以被多次调用,因为Activity随时可以在可见和隐藏之间转换。 3. 前台的生命周期,从onResume()开始到onPause()结束。在这段时间里,该Activity处于所有 Activity的最前面,和用户进行互动。Activity可以经常性地在resumed和paused状态之间切换,例如:当设备准备休眠时,当一个 Activity处理结果被分发时,当一个新的Intent被分发时。所以在这些接口方法中的代码应该属于非常轻量级的。

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式