Android程序设计教程丁山电子课件第2章节Android生命周期与组件通信

上传人:E**** 文档编号:90462129 上传时间:2019-06-12 格式:PPT 页数:85 大小:1.28MB
返回 下载 相关 举报
Android程序设计教程丁山电子课件第2章节Android生命周期与组件通信_第1页
第1页 / 共85页
Android程序设计教程丁山电子课件第2章节Android生命周期与组件通信_第2页
第2页 / 共85页
Android程序设计教程丁山电子课件第2章节Android生命周期与组件通信_第3页
第3页 / 共85页
Android程序设计教程丁山电子课件第2章节Android生命周期与组件通信_第4页
第4页 / 共85页
Android程序设计教程丁山电子课件第2章节Android生命周期与组件通信_第5页
第5页 / 共85页
点击查看更多>>
资源描述

《Android程序设计教程丁山电子课件第2章节Android生命周期与组件通信》由会员分享,可在线阅读,更多相关《Android程序设计教程丁山电子课件第2章节Android生命周期与组件通信(85页珍藏版)》请在金锄头文库上搜索。

1、第二章 Android生命周期与组件通信,1,主要内容,2.1 Android生命周期 2.2 Activity组件 2.3 Intent信使,2,程序的生命周期 程序的生命周期是在Android系统中进程从启动到终止的所有阶段,也就是Android程序启动到停止的全过程。 程序的生命周期由Android系统进行调度和控制的。 Android系统中的进程优先级由高到低 前台进程 可见进程 服务进程 后台进程 空进程,3,前台进程 前台进程是Android系统中最重要的进程,是与用户正在交互的进程,包含以下四种情况。 进程中的Activity正在与用户进行交互。 进程服务被Activity调用,

2、而且这个Activity正在与用户进行交互。 进程服务正在执行声明周期中的回调函数,如onCreate()、onStart()或onDestroy()。 进程的BroadcastReceiver正在执行onReceive()函数。 Android系统在多个前台进程同时运行时,可能会出现资源不足的情况,此时会清除部分前台进程,保证主要的用户界面能够及时响应。,4,可见进程 可见进程指部分程序界面能够被用户看见,却不在前台与用户交互,不响应界面事件的进程。 如果一个进程包含服务,且这个服务正在被用户可见的Activity调用,此进程同样被视为可见进程。 Android系统一般存在少量的可见进程,只

3、有在特殊的情况下,Android系统才会为保证前台进程的资源而清除可见进程。,5,服务进程 服务进程是指包含已启动服务的进程 没有用户界面 在后台长期运行 Android系统除非不能保证前台进程或可视进程所必要的资源,否则不强行清除服务进程 后台进程 后台进程是指不包含任何已经启动的服务,而且没有任何用户可见的Activity的进程 Android系统中一般存在数量较多的后台进程,在系统资源紧张时,系统将优先清除用户较长时间没有见到的后台进程,6,空进程 空进程是不包含任何活跃组件的进程 空进程在系统资源紧张时会被首先清除 但为了提高Android系统应用程序的启动速度,Android系统会将

4、空进程保存在系统内存用,在用户重新启动该程序时,空进程会被重新使用 除了以上的优先级外,以下两方面也决定他们的优先级 进程的优先级取决于所有组件中的优先级最高的部分 进程的优先级会根据与其他进程的依赖关系而变化,7,2.2.1 Android组件简介 2.2.2 Activity生命周期 2.2.3 Task与Activity栈 2.2.4 Activity基本状态,8,2.2.1 Android组件简介,组件是可以调用的基本功能模块,Android应用程序就是由组件组成的。 Android系统有四个重要的组件,分别是Activity、Service、BroadcastReceiver和Con

5、tentProvider。 Activity Activity是Android程序的呈现层,显示可视化的用户界面,并接收与用户交互所产生的界面事件。 Android应用程序可以包含一个或多个Activity,一般在程序启动后会呈现一个Activity,用于提示用户程序已经正常启动。 在界面上的表现形式:全屏窗体,非全屏悬浮窗体,对话框。 Service Service用于没有用户界面,但需要长时间在后台运行的应用。,9,2.2.1 Android组件简介,BroadcastReceiver BroadcastReceiver是用来接受并响应广播消息的组件。 不包含任何用户界面。 可以通过启动A

6、ctivity或者Notification通知用户接收到重要信息。 Notification能够通过多种方法提示用户,包括闪动背景灯、震动设备、发出声音或在状态栏上放置一个持久的图标。 ContentProvider ContentProvider是Android系统提供的一种标准的共享数据的机制,应用程序可以通过ContentProvider访问其他应用程序的私有数据。 私有数据可以是存储在文件系统中的文件,也可以是SQLite中的数据库。 Android系统内部也提供一些内置的ContentProvider,能够为应用程序提供重要的数据信息。,10,2.2.2 Activity生命周期,A

7、ctivity生命周期 Activity生命周期指Activity从启动到销毁的过程。 Activity表现为四种状态,分别是活动状态、暂停状态、停止状态和非活动状态。 活动状态,Activity在用户界面中处于最上层,完全能用户看到,能够与用户进行交互。 暂停状态,Activity在界面上被部分遮挡,该Activity不再处于用户界面的最上层,且不能够与用户进行交互。 停止状态,Activity在界面上完全不能被用户看到,也就是说这个Activity被其他Activity全部遮挡。 非活动状态不在以上三种状态中的Activity则处于非活动状态。,11,2.2.2 Activity生命周期,

8、Activity的四种状态的变换关系图,12,举例:建立一个新的Android工程 工程名称:Chp02_NewActivity 包名称:com.NewActivity Activity名称:NewActivity,13,2.2.2 Activity生命周期,NewActivity.java文件的代码,14,2.2.2 Activity生命周期,NewActivity.java文件的代码 从代码第8行可以看出,一个Activity就是一个Java类,而且必须继承自Activity基类。 代码第13行复写了基类的onCreate()方法,并且在14行调用了父类的onCreate()方法,这在创建

9、Activity时同样是必须的,在Activity第一次运行时总会首先执行onCreate()方法,此方法作用类似于其它面向对象语言中的构造函数。 代码15行采用setContentView()方法设置布局文件, 代码16和17行的findViewById()方法功能是通过控件ID属性获得所需的控件对象,此方法返回View类,View类是android系统的控件基类,可以通过强制类型转换转化成所需的控件对象。 代码18行和19行完成相应控件显示文本的设置。,15,AndroidManifest.xml文件中声明Activity的代码如下:,2.2.2 Activity生命周期,16,2.2.2

10、 Activity生命周期,在应用程序application元素中声明了前面所定义的Activity,在application元素中同样可以声明Service、BroadcastReceiver和ContentProvider。代码第2行属性android:name定义了实现Activity类的名称,其值有两种实现形式,一种是使用全称com.NewActivity,另外一种是使用简化后的类名称.NewActivity,其中的“.”不可省略。第3行属性android:label定义了Activity的标签名称,此名称将在Activity界面上面以标题形式显示,string/app_name是一种

11、资源引用方式,其真实值是res/values/string.xml文件中app_name元素代表的字符串值。intent-filter元素中包含了两个子元素action和category,这些元素的意义将在后面详细介绍,在这里intent-filter的功能就是设置程序的启动主窗体为包含它的Activity。,17,2.2.2 Activity生命周期,在创建的Activity上可以按照需要布局必要的界面控件,如上面的Activity上添加了一个按钮(Button)和一个文本框(TextView),其声明的代码如下所示:,18,2.2.2 Activity生命周期,属性android:layo

12、ut_width定义控件横向宽度,属性android:layout_height定义控件纵向高度,属性android:layout_width和属性android:layout_height的可选值均为fill_parent与wrap_content。fill_parent值代表填充父控件,wrap_content值代表按照内容填充。属性android:id定义控件唯一标识名称,“+id”告诉系统在R.java文件中生成相应的值。 在生命周期中起重要作用的是它的事件回调函数。Activity提供了七个生命周期的事件回调函数,在这些事件回调函数中添加相应的功能代码可以实现或者完成相应的功能。,1

13、9,2.2.2 Activity生命周期,事件的回调函数,public class MyActivity extends Activity protected void onCreate(Bundle savedInstanceState); protected void onStart(); protected void onRestart(); protected void onResume(); protected void onPause(); protected void onStop(); protected void onDestroy(); ,20,2.2.2 Activity

14、生命周期,Activity生命周期的事件回调函数,21,2.2.2 Activity生命周期,Activity状态保存/恢复的事件回调函数,22,Activity事件回调函数的调用顺序,23,2.2.2 Activity生命周期,全生命周期 函数的调用顺序:onCreate() onStart() onResume() onPause() onStop() onDestroy() 调用onCreate()函数分配资源 调用onStart()将Activity显示在屏幕上 调用onResume()获取屏幕焦点 调用onPause()、onStop()和onDestroy(),释放资源并销毁进程,

15、24,2.2.2 Activity生命周期,全生命周期 运行程序,启动MainActivity完成后,查看日志过滤器中的System.out信息如图2.2.2(a)。如果此时再按下模拟器的返回键,则相当于关闭了MainActivity,日志过滤器中的System.out信息变成了如图2.2.2(b)。 图2.2.2 (a) MainActivity启动日志 图2.2.2 (b) MainActivity全生命周期日志,25,2.2.2 Activity生命周期,可视生命周期 可视生存期(Visible Lifetime)是指从调用onStart()开始到调用onStop()结束之间的周期阶段。

16、在这段时间里,Activity对用户是可见的,但是它有可能不是用户所关注的Activity,或者它可能被部分遮挡了。 当Activity界面不可见的时候更新它是没有意义的,因为这样子消耗了资源却没有起到实际的作用。当Activity界面再次可见的时候,可以使用onStart()或者onRestart()来恢复或者重启这些进程。onRestart()方法在onStart()方法前被调用,用于Activity从不可见变为可见的过程,进行特定处理。Activity经常在可见和不可见的状态多次转换,所以onStart()和onStop()多次被调用。另外,onStart()和onStop()同样也用于注册和销毁BroadcastReceive。,26,2.2.2 Activity生命周期,可视生命周期 函数的调用顺序: onSaveInstanceState () onPause() onStop() onRestart() onStart() onResume() 调用onSaveInstanceState()函数保存Activity状态 调用onP

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号