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()恢复与用户的交互

(0)

相关推荐