第2章-Android生命周期与组件通信-《Android程序设计教程》课件.ppt
《第2章-Android生命周期与组件通信-《Android程序设计教程》课件.ppt》由会员分享,可在线阅读,更多相关《第2章-Android生命周期与组件通信-《Android程序设计教程》课件.ppt(85页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第第二二章章 Android Android生命周期与组生命周期与组件通信件通信1主要内容主要内容2.1 Android2.1 Android生命周期生命周期2.2 Activity2.2 Activity组件组件2.3 Intent2.3 Intent信使信使2n程序的生命周期p程序的生命周期是在Android系统中进程从启动到终止的所有阶段,也就是Android程序启动到停止的全过程。p程序的生命周期由Android系统进行调度和控制的。nAndroid系统中的进程优先级由高到低p前台进程p可见进程p服务进程p后台进程p空进程3n前台进程前台进程p前台进程是Android系统中最重要的进程
2、,是与用户正在交互的进程,包含以下四种情况。n进程中的Activity正在与用户进行交互。n进程服务被Activity调用,而且这个Activity正在与用户进行交互。n进程服务正在执行声明周期中的回调函数,如onCreate()、onStart()或onDestroy()。n进程的BroadcastReceiver正在执行onReceive()函数。pAndroid系统在多个前台进程同时运行时,可能会出现资源不足的情况,此时会清除部分前台进程,保证主要的用户界面能够及时响应。4n服务进程服务进程p服务进程是指包含已启动服务的进程p没有用户界面p在后台长期运行pAndroid系统除非不能保证前
3、台进程或可视进程所必要的资源,否则不强行清除服务进程n后台进程后台进程p后台进程是指不包含任何已经启动的服务,而且没有任何用户可见的Activity的进程pAndroid系统中一般存在数量较多的后台进程,在系统资源紧张时,系统将优先清除用户较长时间没有见到的后台进程6n空进程空进程p空进程是不包含任何活跃组件的进程p空进程在系统资源紧张时会被首先清除p但为了提高Android系统应用程序的启动速度,Android系统会将空进程保存在系统内存用,在用户重新启动该程序时,空进程会被重新使用n除了以上的优先级外,以下两方面也决定他们的优先级p进程的优先级取决于所有组件中的优先级最高的部分p进程的优先
4、级会根据与其他进程的依赖关系而变化7 2.2.1 Android2.2.1 Android组件简介组件简介2.2.2 Activity2.2.2 Activity生命周期生命周期2.2.3 Task2.2.3 Task与与ActivityActivity栈栈2.2.4 Activity2.2.4 Activity基本状态基本状态82.2.1 Android2.2.1 Android组件简介组件简介nBroadcastReceiverpBroadcastReceiver是用来接受并响应广播消息的组件。p不包含任何用户界面。p可以通过启动Activity或者Notification通知用户接收到重
5、要信息。pNotification能够通过多种方法提示用户,包括闪动背景灯、震动设备、发出声音或在状态栏上放置一个持久的图标。nContentProviderpContentProvider是Android系统提供的一种标准的共享数据的机制,应用程序可以通过ContentProvider访问其他应用程序的私有数据。p私有数据可以是存储在文件系统中的文件,也可以是SQLite中的数据库。pAndroid系统内部也提供一些内置的ContentProvider,能够为应用程序提供重要的数据信息。102.2.2 Activity2.2.2 Activity生命周期生命周期nActivity生命周期pA
6、ctivity生命周期指Activity从启动到销毁的过程。pActivity表现为四种状态,分别是活动状态、暂停状态、停止状态和非活动状态。p活动状态,Activity在用户界面中处于最上层,完全能用户看到,能够与用户进行交互。p暂停状态,Activity在界面上被部分遮挡,该Activity不再处于用户界面的最上层,且不能够与用户进行交互。p停止状态,Activity在界面上完全不能被用户看到,也就是说这个Activity被其他Activity全部遮挡。p非活动状态不在以上三种状态中的Activity则处于非活动状态。11n举例:建立一个新的Android工程n工程名称:Chp02_New
7、Activityn包名称:com.NewActivitynActivity名称:NewActivity132.2.2 Activity生命周期nNewActivity.java文件的代码n从代码第8行可以看出,一个Activity就是一个Java类,而且必须继承自Activity基类。n代码第13行复写了基类的onCreate()方法,并且在14行调用了父类的onCreate()方法,这在创建Activity时同样是必须的,在Activity第一次运行时总会首先执行onCreate()方法,此方法作用类似于其它面向对象语言中的构造函数。n代码15行采用setContentView()方法设置布
8、局文件,n代码16和17行的findViewById()方法功能是通过控件ID属性获得所需的控件对象,此方法返回View类,View类是android系统的控件基类,可以通过强制类型转换转化成所需的控件对象。n代码18行和19行完成相应控件显示文本的设置。20.21.15nAndroidManifest.xml文件中声明Activity的代码如下:2.2.2 Activity生命周期1 2456789 162.2.2 Activity生命周期n在创建的Activity上可以按照需要布局必要的界面控件,如上面的Activity上添加了一个按钮(Button)和一个文本框(TextView),其声
9、明的代码如下所示:1 6 182.2.2 Activity生命周期n属性android:layout_width定义控件横向宽度,属性android:layout_height定义控件纵向高度,属性android:layout_width和属性android:layout_height的可选值均为fill_parent与wrap_content。fill_parent值代表填充父控件,wrap_content值代表按照内容填充。属性android:id定义控件唯一标识名称,“+id”告诉系统在R.java文件中生成相应的值。n在生命周期中起重要作用的是它的事件回调函数。Activity提供了七
10、个生命周期的事件回调函数,在这些事件回调函数中添加相应的功能代码可以实现或者完成相应的功能。192.2.2 Activity2.2.2 Activity生命周期生命周期n事件的回调函数1.public class MyActivity extends Activity 2.protected void onCreate(Bundle savedInstanceState);3.protected void onStart();4.protected void onRestart();5.protected void onResume();6.protected void onPause();7
11、.protected void onStop();8.protected void onDestroy();9.202.2.2 Activity2.2.2 Activity生命周期生命周期nActivity生命周期的事件回调函数函数函数是否是否可终止可终止说明说明onCreate()否Activity启动后第一个被调用的函数,常用来进行Activity的初始化,例如创建View、绑定数据或恢复信息等。onStart()否当Activity显示在屏幕上时,该函数被调用。onRestart()否当Activity从停止状态进入活动状态前,调用该函数。onResume()否当Activity能够与用
12、户交互,接受用户输入时,该函数被调用。此时的Activity位于Activity栈的栈顶。onPause()是当Activity进入暂停状态时,该函数被调用。一般用来保存持久的数据或释放占用的资源。onStop()是当Activity进入停止状态时,该函数被调用。onDestroy()是在Activity被终止前,即进入非活动状态前,该函数被调用。212.2.2 Activity生命周期nActivity状态保存/恢复的事件回调函数函数函数是否是否可终止可终止说明说明onSaveInstanceState()否Android系统因资源不足终止Activity前调用该函 数,用 以 保 存 Ac
13、tivity的 状 态 信 息,供 onRestoreInstanceState()或onCreate()恢复之用。onRestoreInstanceState()否恢复onSaveInstanceState()保存的Activity状态信息,在onStart()和onResume()之间被调用。222.2.2 Activity生命周期n全生命周期n函数的调用顺序:onCreate()onStart()onResume()onPause()onStop()onDestroy()n调用onCreate()函数分配资源n调用onStart()将Activity显示在屏幕上n调用onResume()
14、获取屏幕焦点n调用onPause()、onStop()和onDestroy(),释放资源并销毁进程242.2.2 Activity生命周期n全生命周期n运行程序,启动MainActivity完成后,查看日志过滤器中的System.out信息如图2.2.2(a)。如果此时再按下模拟器的返回键,则相当于关闭了MainActivity,日志过滤器中的System.out信息变成了如图2.2.2(b)。n图2.2.2(a)MainActivity启动日志n图2.2.2(b)MainActivity全生命周期日志252.2.2 Activity生命周期n可视生命周期n可视生存期(Visible Life
15、time)是指从调用onStart()开始到调用onStop()结束之间的周期阶段。在这段时间里,Activity对用户是可见的,但是它有可能不是用户所关注的Activity,或者它可能被部分遮挡了。n当Activity界面不可见的时候更新它是没有意义的,因为这样子消耗了资源却没有起到实际的作用。当Activity界面再次可见的时候,可以使用onStart()或者onRestart()来恢复或者重启这些进程。onRestart()方法在onStart()方法前被调用,用于Activity从不可见变为可见的过程,进行特定处理。Activity经常在可见和不可见的状态多次转换,所以onStart(
16、)和onStop()多次被调用。另外,onStart()和onStop()同样也用于注册和销毁BroadcastReceive。262.2.2 Activity生命周期n活动生命周期n活动生存期(Foreground Lifetime)指调用onResume()及其对应的onPause()之间的那段生存期,此时,Activity在屏幕的最上层,能够与用户直接交互。在活动生存期内可以安全的假设onSaveInstanceState()和onPause()会被调用,大部分Activity至少需重写onPause()方法来提交未保存的改动,因为在onPause()之外Activity可能在没有任何警
17、告的情况下被终止。在Activity不在前台的时候也可以根据应用程序的架构,选择挂起线程、进程或者广播接收器。onResume()方法可以是轻量级的,因为要求加载Activity界面的时候可以由onCreate()和onRestoreIntanceState()方法处理。使用onResume()可以重新注册已经使用onPause()停止的广播接收器或者其他进程。onPause()最好也是轻量级的,因为下一个要显示到前台的activity的onRsume()要等当前activity的onPause返回后才执行。所以,尽量让onPause()方法中的代码执行迅速,让onResume()方法中的代码
18、尽可能少,以保证在前台和后台之间进行切换的时候程序能够保持响应。282.2.2 Activity生命周期n活动生命周期n函数调用顺序如下:onSaveInstanceState()onPause()onResume()n调用onSaveInstanceState()保存Activity的状态n调用onPause()停止与用户交互n调用onResume()恢复与用户的交互292.2.2 Activity生命周期nMainActivity.java文件的代码1 /1 /主窗体主窗体2 public class MainActivity extends Activity 2 public class
19、 MainActivity extends Activity 3 3 private Button m_btnMainAct=null;private Button m_btnMainAct=null;4 4private TextView m_txtMainAct=null;private TextView m_txtMainAct=null;5 /*Called when the activity is first created.*/5 /*Called when the activity is first created.*/6 Override6 Override7 7 public
20、public void onCreate(Bundle savedInstanceState)void onCreate(Bundle savedInstanceState)8 System.out.println(MainActivity-onCreate);8 System.out.println(MainActivity-onCreate);9 9super.onCreate(savedInstanceState);super.onCreate(savedInstanceState);10 setContentView(R.layout.main);10 setContentView(R
21、.layout.main);11 m_btnMainAct=(Button)findViewById(R.id.btnMainAct);11 m_btnMainAct=(Button)findViewById(R.id.btnMainAct);12 m_txtMainAct=(TextView)findViewById(R.id.txtMainAct);12 m_txtMainAct=(TextView)findViewById(R.id.txtMainAct);13 m_btnMainAct.setOnClickListener(new ButtonListener();13 m_btnMa
22、inAct.setOnClickListener(new ButtonListener();14 m_btnMainAct.setText(14 m_btnMainAct.setText(启动启动SecondActivity);SecondActivity);15 m_txtMainAct.setText(15 m_txtMainAct.setText(这是这是MainActivity);MainActivity);16161717OverrideOverride1818protected void onDestroy()protected void onDestroy()1919/TODO
23、Auto-generated method stub/TODO Auto-generated method stub312.2.2 Activity生命周期nMainActivity.java文件的代码2020System.out.println(MainActivity-onDestroy);System.out.println(MainActivity-onDestroy);2121super.onDestroy();super.onDestroy();2222 2323OverrideOverride2424protected void onPause()protected void o
24、nPause()2525/TODO Auto-generated method stub/TODO Auto-generated method stub2626System.out.println(MainActivity-onPause);System.out.println(MainActivity-onPause);2727super.onPause();super.onPause();2828 2929OverrideOverride3030protected void onRestart()protected void onRestart()3131/TODO Auto-genera
25、ted method stub/TODO Auto-generated method stub3232System.out.println(MainActivity-onRestart);System.out.println(MainActivity-onRestart);3333super.onRestart();super.onRestart();3434 3535OverrideOverride3636protected void onResume()protected void onResume()3737/TODO Auto-generated method stub/TODO Au
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Android程序设计教程 Android 生命周期 组件 通信 程序设计 教程 课件
限制150内