Android应用程序----Activity生命周期(1)Activity事件回调函数的调用顺序Activity生命周期分类 Activity的生命周期可分为全生命周期、可视生命周期和活动生命周期 每种生命周期中包含不同的事件回调函数 全生命周期 全生命周期是从Activity建立到销毁的全部过程,始于onCreate(),结束于onDestroy() 使用者通常在onCreate()中初始化Activity所能使用的全局资源和状态,并在onDestroy()中释放这些资源 在一些极端的情况下,Android系统会不调用onDestroy()函数,而直接终止进程 可视生命周期 可视生命周期是Activity在界面上从可见到不可见的过程,开始于onStart(),结束于onStop() 可视生命周期 onStart()一般用来初始化或启动与更新界面相关的资源 onStop()一般用来暂停或停止一切与更新用户界面相关的线程、计时器和服务 onRestart()函数在onSart()前被调用,用来在Activity从不可见变为可见的过程中,进行一些特定的处理过程 onStart()和onStop()会被多次调用 onStart()和onStop()也经常被用来注册和注销BroadcastReceiver 活动生命周期 活动生命周期是Activity在屏幕的最上层,并能够与用户交互的阶段,开始于onResume(),结束于onPause() 在Activity的状态变换过程中onResume()和onPause()经常被调用,因此这两个函数中应使用更为简单、高效的代码 活动生命周期 onPause()是第一个被标识为“可终止”的函数 在onPause()返回后,onStop()和onDestroy()随时能被Android系统终止 onPause()常用来保存持久数据,如界面上的用户的输入信息等 onPause()和onSaveInstanceState()的区别 这两个函数都可以用来保存界面的用户输入数据,他们的区别在于 onPause()一般用于保存持久性数据,并将数据保存在存储设备上的文件系统或数据库系统中的 onSaveInstanceState()主要用来保存动态的状态信息,信息一般保存在Bundle中 Bundle是能够保存多种格式数据的对象 在onSaveInstanceState()保存在Bundle中的数据,系统在调用onRestoreInstanceState()和onCreate()时,会同样利用Bundle将数据传递给函数 举例:建立一个新的Android工程 工程名称:ActivityLifeCycle 包名称:edu.hrbeu.ActivityLifeCycle Activity名称:ActivityLifeCycle ActivityLifeCycle.java文件的代码 上面的程序主要通过在生命周期函数中添加“日志点”的方法进行调试,程序的运行结果将会显示在LogCat中 为了显示结果易于观察和分析,在LogCat设置过滤器LifeCycleFilter,过滤方法选择by Log Tag,过滤关键字为LIFTCYCLE 全生命周期 启动和关闭ActivityLifeCycle 的LogCat输出 启动ActivityLifeCycle 按下模拟器的“返回键” 关闭ActivityLifeCycle LogCat输出结果 函数的调用顺序:onCreate() → onStart()→ onResume() → onPause()→ onStop()→ onDestroy() 调用onCreate()函数分配资源 调用onStart()将Activity显示在屏幕上 调用onResume()获取屏幕焦点 调用onPause()、onStop()和onDestroy(),释放资源并销毁进程 可视生命周期 状态转换 启动ActivityLifeCycle 按“呼出/接听键”启动内置的拨号程序 再通过“返回键”退出拨号程序 ActivityLifeCycle重新显示在屏幕中 可视生命周期的LogCat输出结果 可视生命周期 函数的调用顺序: onSaveInstanceState ()→ onPause()→ onStop() → onRestart()→ onStart()→ onResume() 调用onSaveInstanceState()函数保存Activity状态 调用onPause()和onStop(),停止对不可见Activity的更新 调用onRestart()恢复需要界面上需要更新的信息 调用onStart()和onResume()重新显示Activity,并接受用户交互 开启IDA的可视生命周期:Dev Tools → Development Settings → Immediately destroy activities (IDA)下开启IDA 活动生命周期 活动生命周期的LogCat输出 启动ActivityLifeCycle 通过“挂断键”使模拟器进入休眠状态 再通过“挂断键”唤醒模拟器 LogCat的输出结果 函数调用顺序如下:onSaveInstanceState() → onPause() → onResume() 调用onSaveInstanceState ()保存Activity的状态 调用onPause()停止与用户交互 调用onResume()恢复与用户的交互 |
|