四大组件 之一的 Activity

来源:互联网 发布:网络语不腻是什么意思 编辑:程序博客网 时间:2024/05/04 06:02

说到Android四大组件,相信都会说   

一:Activity    

二:Service  

三:Broadcast Receiver  广播  

四:Content Provider  内容提供者

下面我们主要说的是  我对Activity 的理解

                      1:  先说一下概念 什么是Activityn呢?

Activity 是用户接口程序,原则上它会提供给用户一个交互式的接口功能。它是 android 应用程序的基本功能单元。Activity 本身是没有界面的。所以activity类创建了一个窗口,开发人员可以通过setContentView(View)接口把UI放到activity创建的窗口上,当activity指向全屏窗口时,也可以用其他方式实现:作为漂浮窗口(通过windowIsFloating的主题集合),或者嵌入到其他的activity(使用ActivityGroup)。activity是单独的,用于处理用户操作。几乎所有的activity都要和用户打交道,

2:看Activity生命周期  看张图片 有助于理解


重点  理解 运行顺序 

OnCreate()当程序被第一次启动,会调用 OnCreate()生命周期方法 创建应用 ,在这里可以做初始化的一些操作

OnStart() 当程序被创建 会调用OnStart() 准备运行 方法    这时,Activity已经可见了  不过是在后台;

OnResume() 可见的  可做获取焦点 的 操作  这时  Actiivity 完全可见  在前端    然后服务运行起来了

OnPause() 准备暂停  这里 可以做存储数据的操作但是不能太耗时 失去焦点    

OnStop()  准备停止 可做一些微量的回收操作

OnDestroy() 准备销毁  在这里 可以做释放内存 杀死程序的操作

OnRestart() 准备再次运行  

这里提供一个简单的 运行 示例

应用运行时  然后按home 键 回到桌面            OnPause()   再次启动应用   OnResume()

应用运行时  按返回键  回到桌面  OnPause() OnStop()  再次启动应用 OnRestart()  OnStart() OnResume()

当应用处于停止状态  OnStop()  如果优先级高的应用需要内存 就会杀死 如果再次运行该应用就会重新 回调OnCreate() 

3:Activity的两种启动方式

   (1):startActivity(intent)  参数 Intent对象 

   (2):startActivityForResult(Intent intent, int requestCode) 参数一:Intent对象  参数二:请求码

需要知道的是  跳转过去的 Activity 回传数据的时候  写 setResult(int resultCode, Intent intent;参数一:结果码  参数二:Intent对象

onActivityResult(int requestCode, int resultCode, Intent data)方法 这里可以接受返回的参数值


4:activity的四种加载模式

                   一:standard 标准模式  系统默认的模式   后进先出的栈结构

每启动一个Activity都会重新创建一个新的Activity 与任务栈,被谁启动的Activity的任务栈就会存在谁的任务栈中       

  二:singleTop 栈顶复用模式 

如果一个Activity 已经在任务栈的栈顶,那么不会重新创建,不会调用它的OnCreate() OnStart() 因为状态没有发生过变化,但是 会调用OnNewIntent(),通过这个方法 可以取出当前请求的信息。

如果Acitivity不是位于栈顶 那么就会重现创建。

  三: singleTask 栈内复用模式  也称内单例模式

如果一个Activity已经存在,系统不会重新创建,也会调用OnNewIntent().       当Activity被创建且以singleTask模式启动,首先寻找属于它的任务栈,不存在就创建,存在就判断是否有它的实例存在,不存在 创建实例  存在  会调到栈顶 同样 调用OnNewIntent()  

  四:singleInstance  单实例模式 也称全局单例模式

具有singleTask的全部特性,每个Activity都会有一个单独属于它的任务栈存在,无论系统如何调用,都只有一个独立的任务栈,复用性强,除非任务栈被销毁了。


0 0
原创粉丝点击