分类
商品
商品
店铺
资讯
分类
商品
商品
店铺
资讯

Android面试集锦系列(28)——怎样了解Activity的生命周期?

  • 时间:2019-03-26 01:37 作者:Android架构 来源:Android架构 阅读:177
  • 扫一扫,手机访问
摘要:这是一道几乎必问的Android面试题,当听到这题时大家的神经都会麻木,你问我背。说实话,假如你问我怎样了解,我也很难答复,由于这个问题太宽泛了,答什么都可以又答什么都难答好。有一次电话面试问了一个人,对方直接说不要问这种在网上四处都能看到的题,他只需上网一查就会。好吧,我脾气好,就接着问:“那问什

这是一道几乎必问的Android面试题,当听到这题时大家的神经都会麻木,你问我背。说实话,假如你问我怎样了解,我也很难答复,由于这个问题太宽泛了,答什么都可以又答什么都难答好。有一次电话面试问了一个人,对方直接说不要问这种在网上四处都能看到的题,他只需上网一查就会。好吧,我脾气好,就接着问:
“那问什么题呢?”
“逻辑的,算法的,业务什么的,就是纯JAVA代码的。”
“那么熟习什么算法呢?”
“。。。”(没答上)


但Activity的生命周期又至关重要,不问如同又对不起彼此。根据得到的反馈我后来稍稍改变了一下提问方式,不问怎样了解,而是给几个场景问怎样使用回调或者回调的顺序(或者要注意什么),从侧面看能否真正了解了。

下面还是先过一下官网上的Activity生命周期图,注意几个框线其实代表又可以细分为不同的周期。

假如一个Activity在客户可见时才解决某个广播,不可见时注销掉,那么应该在哪两个生命周期的回调方法去注册和注销BroadcastReceiver呢?

Activity 的可见生命周期发生在 onStart调用与 onStop调用之间。在这段时间,客户可以在屏幕上看到 Activity 并与其交互。我们可以在 onStart中注册一个 BroadcastReceiver以监控影响 UI 的变化,并在客户无法再看到您显示的内容时在 onStop中将其取消注册。

假如对方答复是在onResume和onPause方法中,那么你可以去引导对方看看在这两个方法有什么不好的地方。

假如有少量数据在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方法执行。

您可以利用这种可预测的生命周期回调顺序管理从一个 Activity 到另一个 Activity 的信息转变。 例如,假如您必需在第一个 Activity 中止时向数据库写入数据,以便下一个 Activity 能够读取该数据,则应在 onPause而不是 onStop执行期间向数据库写入数据。

小结

这几个问题看似简单,其实还是很能问出面试者能否真正了解Activity生命周期的转变。经常有人会问,知道这些有什么用?又不能提升编程能力?编程能力是一个很复杂的体系,不能光看有技术含量或者者高大上的算法才叫有能力,和悟道一样,我认为认识理清Android体系,顺应它的道(机制)开发应用也是一种能力。

最后

在现在这个金三银四的面试季,我自己在网上也搜集了很多资料做成了文档和架构视频资料免费分享给大家【包括高级UI、性能优化、架构师课程、NDK、Kotlin、混合式开发(ReactNative+Weex)、Flutter等架构技术资料】,希望能帮助到您面试前的复习且找到一个好的工作,也节省大家在网上搜索资料的时间来学习。

资料获取方式:加入Android架构交流QQ群聊:513088520 ,进群即领取资料!!!

点击链接加入群聊【Android移动架构总群】:加入群聊

资料大全
  • 全部评论(0)
最新发布的资讯信息
【系统环境|】极客时间-数据分析实战45讲【完结】(2021-09-02 16:26)
【系统环境|windows】字节跳动前台面试题解析:盛最多水的容器(2021-03-20 21:27)
【系统环境|windows】DevOps敏捷60问,肯定有你想理解的问题(2021-03-20 21:27)
【系统环境|windows】字节跳动最爱考的前台面试题:JavaScript 基础(2021-03-20 21:27)
【系统环境|windows】JavaScript 的 switch 条件语句(2021-03-20 21:27)
【系统环境|windows】解决 XML 数据应用实践(2021-03-20 21:26)
【系统环境|windows】20个编写现代CSS代码的建议(2021-03-20 21:26)
【系统环境|windows】《vue 3.0探险记》- 运行报错:Error:To install them, you can run: npm install --save core-js/modules/es.arra...(2021-03-20 21:24)
【系统环境|windows】浅谈前台可视化编辑器的实现(2021-03-20 21:24)
【系统环境|windows】产品经理入门迁移学习指南(2021-03-20 21:23)
血鸟云
手机二维码手机访问领取大礼包
返回顶部