Android生命周期(1).ppt
《Android生命周期(1).ppt》由会员分享,可在线阅读,更多相关《Android生命周期(1).ppt(63页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第第4章章 Android生命周期生命周期本章学习目标n 了解Android系统的进程优先级的变化方式n 了解Android系统的四大基本组件n 了解Activity的生命周期中各状态的变化关系n 掌握Activity事件回调函数的作用和调用顺序n 掌握Android应用程序的调试方法和工具4.1 程序生命周期n程序的生命周期q程序的生命周期是在Android系统中进程从启动到终止的所有阶段,也就是Android程序启动到停止的全过程q程序的生命周期由Android系统进行调度和控制的 4.1 程序生命周期nAndroid系统中的进程优先级由高到低q前台进程q可见进程q服务进程q后台进程q空进
2、程4.1 程序生命周期n前台进程q前台进程是Android系统中最重要的进程,是与用户正在交互的进程,包含以下四种情况n进程中的Activity正在与用户进行交互n进程服务被Activity调用,而且这个Activity正在与用户进行交互n进程服务正在执行声明周期中的回调函数,如onCreate()、onStart()或onDestroy()n进程的BroadcastReceiver正在执行onReceive()函数qAndroid系统在多个前台进程同时运行时,可能会出现资源不足的情况,此时会清除部分前台进程,保证主要的用户界面能够及时响应4.1 程序生命周期n可见进程q可见进程指部分程序界面
3、能够被用户看见,却不在前台与用户交互,不响应界面事件的进程q如果一个进程包含服务,且这个服务正在被用户可见的Activity调用,此进程同样被视为可见进程qAndroid系统一般存在少量的可见进程,只有在特殊的情况下,Android系统才会为保证前台进程的资源而清除可见进程4.1 程序生命周期n服务进程q服务进程是指包含已启动服务的进程n没有用户界面n在后台长期运行qAndroid系统除非不能保证前台进程或可视进程所必要的资源,否则不强行清除服务进程4.1 程序生命周期n后台进程q后台进程是指不包含任何已经启动的服务,而且没有任何用户可见的Activity的进程qAndroid系统中一般存在数
4、量较多的后台进程,在系统资源紧张时,系统将优先清除用户较长时间没有见到的后台进程4.1 程序生命周期n空进程q空进程是不包含任何活跃组件的进程q空进程在系统资源紧张时会被首先清除q但为了提高Android系统应用程序的启动速度,Android系统会将空进程保存在系统内存用,在用户重新启动该程序时,空进程会被重新使用q除了以上的优先级外,以下两方面也决定他们的优先级n进程的优先级取决于所有组件中的优先级最高的部分n进程的优先级会根据与其他进程的依赖关系而变化4.2 Android组件n组件是可以调用的基本功能模块,Android应用程序就是由组件组成的nAndroid系统有四个重要的组件,分别是
5、Activity、Service、BroadcaseReceiver和ContentProvider4.2 Android组件nActivityqActivity是Android程序的呈现层,显示可视化的用户界面,并接收与用户交互所产生的界面事件qAndroid应用程序可以包含一个或多个Activity,一般在程序启动后会呈现一个Activity,用于提示用户程序已经正常启动q在界面上的表现形式:全屏窗体,非全屏悬浮窗体,对话框nServiceqService用于没有用户界面,但需要长时间在后台运行的应用4.2 Android组件nBroadcaseReceiverqBroadcaseRece
6、iver是用来接受并响应广播消息的组件q不包含任何用户界面q可以通过启动Activity或者Notification通知用户接收到重要信息nNotification能够通过多种方法提示用户,包括闪动背景灯、震动设备、发出声音或在状态栏上放置一个持久的图标4.2 Android组件nContentProviderqContentProvider是Android系统提供的一种标准的共享数据的机制,应用程序可以通过ContentProvider访问其他应用程序的私有数据n私有数据可以是存储在文件系统中的文件,也可以是SQLite中的数据库qAndroid系统内部也提供一些内置的ContentProv
7、ider,能够为应用程序提供重要的数据信息4.2 Android组件n组件生命周期q所有Android组件都具有自己的生命周期,是从组件建立到组件销毁的整个过程q在生命周期中,组件会在可见、不可见、活动、非活动等状态中不断变化4.3 Activity生命周期nActivity生命周期qActivity生命周期指Activity从启动到销毁的过程qActivity表现为四种状态,分别是活动状态、暂停状态、停止状态和非活动状态n活动状态,Activity在用户界面中处于最上层,完全能不用户看到,能够与用户进行交互n暂停状态,Activity在界面上被部分遮挡,该Activity不再处于用户界面的最
8、上层,且不能够与用户进行交互n停止状态,Activity在界面上完全不能被用户看到,也就是说这个Activity被其他Activity全部遮挡n非活动状态不在以上三种状态中的Activity则处于非活动状态4.3 Activity生命周期nActivity的四种状态的变换关系图4.3 Activity生命周期nActivity栈q遵循“后进先出”的规则4.3 Activity生命周期n事件的回调函数1.public class MyActivity extends Activity 2.protected void onCreate(Bundle savedInstanceState);3.p
9、rotected void onStart();4.protected void onRestart();5.protected void onResume();6.protected void onPause();7.protected void onStop();8.protected void onDestroy();9.4.3 Activity生命周期nActivity生命周期的事件回调函数函数函数是否是否可终止可终止说明说明onCreate()否Activity启动后第一个被调用的函数,常用来进行Activity的初始化,例如创建View、绑定数据或恢复信息等。onStart()否当
10、Activity显示在屏幕上时,该函数被调用。onRestart()否当Activity从停止状态进入活动状态前,调用该函数。onResume()否当Activity能够与用户交互,接受用户输入时,该函数被调用。此时的Activity位于Activity栈的栈顶。onPause()是当Activity进入暂停状态时,该函数被调用。一般用来保存持久的数据或释放占用的资源。onStop()是当Activity进入停止状态时,该函数被调用。onDestroy()是在Activity被终止前,即进入非活动状态前,该函数被调用。4.3 Activity生命周期nActivity状态保存/恢复的事件回调函
11、数函数函数是否是否可终止可终止说明说明onSaveInstanceState()否Android系统因资源不足终止Activity前调用该函数,用以保存Activity的状态信息,供onRestoreInstanceState()或onCreate()恢复之用。onRestoreInstanceState()否恢复onSaveInstanceState()保存的Activity状态信息,在onStart()和onResume()之间被调用。4.3 Activity生命周期nActivity事件回调函数的调用顺序nActivity生命周期分类qActivity的生命周期可分为全生命周期、可视生命
12、周期和活动生命周期q每种生命周期中包含不同的事件回调函数4.3 Activity生命周期n全生命周期q全生命周期是从Activity建立到销毁的全部过程,始于onCreate(),结束于onDestroy()n使用者通常在onCreate()中初始化Activity所能使用的全局资源和状态,并在onDestroy()中释放这些资源n在一些极端的情况下,Android系统会不调用onDestroy()函数,而直接终止进程4.3 Activity生命周期n可视生命周期q可视生命周期是Activity在界面上从可见到不可见的过程,开始于onStart(),结束于onStop()4.3 Activit
13、y生命周期n可视生命周期nonStart()一般用来初始化或启动与更新界面相关的资源nonStop()一般用来暂停或停止一切与更新用户界面相关的线程、计时器和服务nonRestart()函数在onSart()前被调用,用来在Activity从不可见变为可见的过程中,进行一些特定的处理过程nonStart()和onStop()会被多次调用nonStart()和onStop()也经常被用来注册和注销BroadcastReceiver4.3 Activity生命周期n活动生命周期q活动生命周期是Activity在屏幕的最上层,并能够与用户交互的阶段,开始于onResume(),结束于onPause(
14、)q在Activity的状态变换过程中onResume()和onPause()经常被调用,因此这两个函数中应使用更为简单、高效的代码4.3 Activity生命周期n活动生命周期nonPause()是第一个被标识为“可终止”的函数n在onPause()返回后,onStop()和onDestroy()随时能被Android系统终止nonPause()常用来保存持久数据,如界面上的用户的输入信息等4.3 Activity生命周期nonPause()和onSaveInstanceState()的区别 这两个函数都可以用来保存界面的用户输入数据,他们的区别在于qonPause()一般用于保存持久性数据
15、,并将数据保存在存储设备上的文件系统或数据库系统中的qonSaveInstanceState()主要用来保存动态的状态信息,信息一般保存在Bundle中nBundle是能够保存多种格式数据的对象n在onSaveInstanceState()保存在Bundle中的数据,系统在调用onRestoreInstanceState()和onCreate()时,会同样利用Bundle将数据传递给函数4.3 Activity生命周期n举例:建立一个新的Android工程q工程名称:ActivityLifeCycleq包名称:edu.hrbeu.ActivityLifeCycleqActivity名称:Act
16、ivityLifeCycle4.3 Activity生命周期nActivityLifeCycle.java文件的代码1.package edu.hrbeu.ActivityLifeCycle;2.3.import android.app.Activity;4.import android.os.Bundle;5.import android.util.Log;6.7.public class ActivityLifeCycle extends Activity 8.private static String TAG=LIFTCYCLE;9.Override /完全生命周期开始时被调用,初始化A
17、ctivity10.public void onCreate(Bundle savedInstanceState)11.super.onCreate(savedInstanceState);12.setContentView(R.layout.main);13.Log.i(TAG,(1)onCreate();14.15.16.Override /可视生命周期开始时被调用,对用户界面进行必要的更改 17.public void onStart()18.super.onStart();19.Log.i(TAG,(2)onStart();4.3 Activity生命周期nActivityLifeCy
18、cle.java文件的代码20.21.22.Override /在onStart()后被调用,用于恢复onSaveInstanceState()保存的用户界面信息23.public void onRestoreInstanceState(Bundle savedInstanceState)24.super.onRestoreInstanceState(savedInstanceState);25.Log.i(TAG,(3)onRestoreInstanceState();26.27.28.Override /在活动生命周期开始时被调用,恢复被onPause()停止的用于界面更新的资源29.pu
19、blic void onResume()30.super.onResume();31.Log.i(TAG,(4)onResume();32.33.34.Override /在onResume()后被调用,保存界面信息35.public void onSaveInstanceState(Bundle savedInstanceState)4.3 Activity生命周期nActivityLifeCycle.java文件的代码36.super.onSaveInstanceState(savedInstanceState);37.Log.i(TAG,(5)onSaveInstanceState();
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Android 生命周期
限制150内