Android生命周期平顶山学院软件熊蜀峰pdsujnow@163.com平顶山学院软件学院本章学习目标了解Android系统的进程优先级的变化方式了解Android系统的四大基本组件了解Activity的生命周期中各状态的变化关系掌握Activity事件回调函数的作用和调用顺序掌握Android应用程序的调试方法和工具平顶山学院软件学院4.1程序生命周期程序的生命周期程序的生命周期是在Android系统中进程从启动到终止的所有阶段,也就是Android程序启动到停止的全过程程序的生命周期由Android系统进行调度和控制的平顶山学院软件学院4.1程序生命周期Android系统中的进程优先级由高到低前台进程可见进程服务进程后台进程空进程前台进程高优先级中优先级低优先级可见进程服务进程后台进程空进程平顶山学院软件学院4.1程序生命周期前台进程前台进程是Android系统中最重要的进程,是与用户正在交互的进程,包含以下四种情况进程中的Activity正在与用户进行交互进程服务被Activity调用,而且这个Activity正在与用户进行交互进程服务正在执行声明周期中的回调函数,如onCreate()、onStart()或onDestroy()进程的BroadcastReceiver正在执行onReceive()函数Android系统在多个前台进程同时运行时,可能会出现资源不足的情况,此时会清除部分前台进程,保证主要的用户界面能够及时响应平顶山学院软件学院4.1程序生命周期可见进程可见进程指部分程序界面能够被用户看见,却不在前台与用户交互,不响应界面事件的进程如果一个进程包含服务,且这个服务正在被用户可见的Activity调用,此进程同样被视为可见进程Android系统一般存在少量的可见进程,只有在特殊的情况下,Android系统才会为保证前台进程的资源而清除可见进程平顶山学院软件学院4.1程序生命周期服务进程服务进程是指包含已启动服务的进程没有用户界面在后台长期运行Android系统除非不能保证前台进程或可视进程所必要的资源,否则不强行清除服务进程平顶山学院软件学院4.1程序生命周期后台进程后台进程是指不包含任何已经启动的服务,而且没有任何用户可见的Activity的进程Android系统中一般存在数量较多的后台进程,在系统资源紧张时,系统将优先清除用户较长时间没有见到的后台进程平顶山学院软件学院4.1程序生命周期空进程空进程是不包含任何活跃组件的进程空进程在系统资源紧张时会被首先清除但为了提高Android系统应用程序的启动速度,Android系统会将空进程保存在系统内存用,在用户重新启动该程序时,空进程会被重新使用除了以上的优先级外,以下两方面也决定他们的优先级进程的优先级取决于所有组件中的优先级最高的部分进程的优先级会根据与其他进程的依赖关系而变化平顶山学院软件学院4.2Android组件组件是可以调用的基本功能模块,Android应用程序就是由组件组成的Android系统有四个重要的组件,分别是Activity、Service、BroadcastReceiver和ContentProvider平顶山学院软件学院4.2Android组件ActivityActivity是Android程序的呈现层,显示可视化的用户界面,并接收与用户交互所产生的界面事件Android应用程序可以包含一个或多个Activity,一般在程序启动后会呈现一个Activity,用于提示用户程序已经正常启动在界面上的表现形式:全屏窗体,非全屏悬浮窗体,对话框ServiceService用于没有用户界面,但需要长时间在后台运行的应用平顶山学院软件学院4.2Android组件BroadcastReceiverBroadcastReceiver是用来接受并响应广播消息的组件不包含任何用户界面可以通过启动Activity或者Notification通知用户接收到重要信息Notification能够通过多种方法提示用户,包括闪动背景灯、震动设备、发出声音或在状态栏上放置一个持久的图标平顶山学院软件学院4.2Android组件ContentProviderContentProvider是Android系统提供的一种标准的共享数据的机制,应用程序可以通过ContentProvider访问其他应用程序的私有数据私有数据可以是存储在文件系统中的文件,也可以是SQLite中的数据库Android系统内部也提供一些内置的ContentProvider,能够为应用程序提供重要的数据信息平顶山学院软件学院4.2Android组件组件生命周期所有Android组件都具有自己的生命周期,是从组件建立到组件销毁的整个过程在生命周期中,组件会在可见、不可见、活动、非活动等状态中不断变化平顶山学院软件学院4.3Activity生命周期Activity生命周期Activity生命周期指Activity从启动到销毁的过程Activity表现为四种状态,分别是活动状态、暂停状态、停止状态和非活动状态活动状态,Activity在用户界面中处于最上层,完全能被用户看到,能够与用户进行交互暂停状态,Activity在界面上被部分遮挡,该Activity不再处于用户界面的最上层,且不能够与用户进行交互停止状态,Activity在界面上完全不能被用户看到,也就是说这个Activity被其他Activity全部遮挡非活动状态不在以上三种状态中的Activity则处于非活动状态平顶山学院软件学院4.3Activity生命周期Activity的四种状态的变换关系图活动状态停止状态非活动状态暂停状态平顶山学院软件学院4.3Activity生命周期Activity栈遵循“后进先出”的规则ActivityActivityActivityActivityActivity......入栈活动状态暂停状态或停止状态出栈Activity非活动状态Activity释放资源终止非活动状态Activity栈平顶山学院软件学院4.3Activity生命周期事件的回调函数1.publicclassMyActivityextendsActivity{2.protectedvoidonCreate(BundlesavedInstanceState);3.protectedvoidonStart();4.protectedvoidonRestart();5.protectedvoidonResume();6.protectedvoidonPause();7.protectedvoidonStop();8.protectedvoidonDestroy();9.}平顶山学院软件学院4.3Activity生命周期Activity生命周期的事件回调函数函数是否可终止说明onCreate()否Activity启动后第一个被调用的函数,常用来进行Activity的初始化,例如创建View、绑定数据或恢复信息等。onStart()否当Activity显示在屏幕上时,该函数被调用。onRestart()否当Activity从停止状态进入活动状态前,调用该函数。onResume()否当Activity能够与用户交互,接受用户输入时,该函数被调用。此时的Activity位于Activity栈的栈顶。onPause()是当Activity进入暂停状态时,该函数被调用。一般用来保存持久的数据或释放占用的资源。onStop()是当Activity进入停止状态时,该函数被调用。onDestroy()是在Activity被终止前,即进入非活动状态前,该函数被调用。平顶山学院软件学院4.3Activity生命周期Activity状态保存/恢复的事件回调函数函数是否可终止说明onSaveInstanceState()否Android系统因资源不足终止Activity前调用该函数,用以保存Activity的状态信息,供onRestoreInstanceState()或onCreate()恢复之用。onRestoreInstanceState()否恢复onSaveInstanceState()保存的Activity状态信息,在onStart()和onResume()之间被调用。平顶山学院软件学院4.3Activity生命周期Activity事件回调函数的调用顺序Activity生命周期分类Activity的生命周期可分为全生命周期、可视生命周期和活动生命周期每种生命周期中包含不同的事件回调函数onCreateonDestroyonStartonStoponResumeonPauseonRestoreInstanceStateonSaveInstanceStateonRestart活动生命周期可视生命周期全生命周期123456789平顶山学院软件学院4.3Activity生命周期全生命周期全生命周期是从Activity建立到销毁的全部过程,始于onCreate(),结束于onDestroy()使用者通常在onCreate()中初始化Activity所能使用的全局资源和状态,并在onDestroy()中释放这些资源在一些极端的情况下,Android系统会不调用onDestroy()函数,而直接终止进程onCreateonDestroyonStartonStoponResumeonPauseonRestoreInstanceStateonSaveInstanceStateonRestart活动生命周期可视生命周期全生命周期123456789平顶山学院软件学院4.3Activity生命周期可视生命周期可视生命周期是Activity在界面上从可见到不可见的过程,开始于onStart(),结束于onStop()onCreateonDestroyonStartonStoponResumeonPauseonRestoreInstanceStateonSaveInstanceStateonRestart活动生命周期可视生命周期全生命周期123456789平顶山学院软件学院4.3Activity生命周期可视生命周期onStart()一般用来初始化或启动与更新界面相关的资源onStop()一般用来暂停或停止一切与更新用户界面相关的线程、计时器和服务onRestart()函数在onSart()前被调用,用来在Activity从不可见变为可见的过程中,进行一些特定的处理过程onStart()和onStop()会被多次调用onStart()和onStop()也经常被用来注册和注销BroadcastReceiver平顶山学院软件学院4.3Activity生命周期活动生命周期活动生命周期是Activity在屏幕的最上层,并能够与用户交互的阶段,开始于onResume(),结束于onPause()在Activity的状态变换过程中onResume()和onPause()经常被调用,因此这两个函数中应使用更为简单、高效的代码平顶山学院软件学院4.3Activity生命周期活动生命周期onPause()是第一个被标识为“可终止”的函数在onPause()返回后,onStop()和onDestroy()随时能被Android系统终止onPause()常用来保存持久数据,如界面上的用户的输入信息等onCreateonDestroyonStartonStoponResumeonPauseonRestoreInstanceStateonSaveInstanceStateonRestart活动生命周期可视生命周期全生命周期123456789平顶山学院软件学院4.3Activity生命周期onPause()和onSaveInstanceState()的区别这两个函数都可以用来保存界面的用户输入数据,他们的区别在于on