Android -- 每日一问:怎么理解 Activity 的生命周期?
Posted Kevin-Dev
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android -- 每日一问:怎么理解 Activity 的生命周期?相关的知识,希望对你有一定的参考价值。
典型回答
如果一个 Activity 在用户可见时才处理某个广播,不可见时注销掉,那么应该在哪两个生命周期的回调方法去注册和注销
BroadcastReceiver 呢?
Activity 的可见生命周期发生在 onStart调用与 onStop调用之间。在这段时间,用户可以在屏幕上看到 Activity 并与其交互。我们可以在 onStart中注册一个BroadcastReceiver 以监控影响 UI 的变化,并在用户无法再看到您显示的内容时在
onStop 中将其取消注册。
如果有一些数据在 Activity 跳转时(或者离开时)要保存到数据库,那么你认为是在 onPause 好还是在 onStop
执行这个操作好呢?
onPause 较容易被触发,所以我们在做 BroadcastReceiver 注销时放在onStop要好些。onPause 时 Activity 界面仍然是可见的,如弹出一个 Dialog 时。但在保存数据时,放在 onPause 去做可以保证数据存储的有效性,如果放在 onStop 去做,在某些情况下 Activity 走完 onPause 后有可能还没顺利走到 onStop 就被系统回收了。
但要注意在 onPause 中要非常迅速地执行完所需操作,不然会影响到下一个 Activity 的生命周期函数的调用。
简单说一下 Activity A 启动 Activity B 时,两个 Activity 生命周期的变化。
当一个 Activity 启动另一个 Activity 时,它们都会发生生命周期转变。第一个 Activity 暂停然后停止(但如果它在后台仍然可见,则不会停止,比如 B 是半透明的),系统会创建另一个 Activity。 如果这两个 Activity 共用保存数据到文件或者数据库,必须要注意,在创建第二个 Activity 前,第一个 Activity 不会完全停止。更确切地说,启动第二个 Activity 的过程与停止第一个 Activity 的过程存在重叠。
以下是当 Activity A 启动 Activity B 时一系列操作的发生顺序:
Activity A 的 onPause 方法执行。
Activity B 的 onCreate、onStart 和 onResume 方法依次执行。
然后,如果 Activity A 在屏幕上不再可见,则其 onStop 方法执行。
你的朋友是不是也在准备面试呢?你可以“请朋友读”,把今天的题目分享给好友,或许你能帮到他。
以上是关于Android -- 每日一问:怎么理解 Activity 的生命周期?的主要内容,如果未能解决你的问题,请参考以下文章
Android -- 每日一问:如何理解 Android 应用的进程?
Android -- 每日一问:在项目中使用AsyncTask会有什么问题吗?
Android -- 每日一问:在项目中使用AsyncTask会有什么问题吗?
Android -- 每日一问:如何理解 Gradle?Gradle 在 Android 的构建过程中有什么作用?