Android应用程序----Activity生命周期(2)
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()恢复与用户的交互