android系统性学习 2,技术总监都拍手叫好

  • 思路:分条解释Activity从创建到销毁整个生命周期中涉及到的方法及作用

  • 参考回答:在Activity的生命周期涉及到七大方法,分别是:

    • onCreate()表示Activity 正在创建,常做初始化工作,如setContentView界面资源、初始化数据

    • onStart()表示Activity 正在启动,这时Activity 可见但不在前台,无法和用户交互

    • onResume()表示Activity 获得焦点,此时Activity 可见且在前台并开始活动

    • onPause()表示Activity 正在停止,可做 数据存储、停止动画等操作

    • onStop()表示activity 即将停止,可做稍微重量级回收工作,如取消网络连接、注销广播接收器等

    • onDestroy()表示Activity 即将销毁,常做回收工作、资源释放

    • 另外,当Activity由后台切换到前台,由不可见到可见时会调用onRestart(),表示Activity 重新启动

Q2:onStart()和onResume()/onPause()和onStop()的区别?

  • 技术点:Activity生命周期

  • 思路:可从使用细节出发

  • 参考回答:onStart()与onStop()是从Activity是否可见这个角度调用的,onResume()和onPause()是从Activity是否显示在前台这个角度来回调的,在实际使用没其他明显区别。

Q3:Activity A 启动另一个Activity B 会回调哪些方法?如果Activity B是完全透明呢?如果启动的是一个对话框Activity呢?

  • 技术点:Activity生命周期

  • 参考回答:Activity A启动另一个Activity B会回调的方法:Activity A的onPause() -->Activity B的onCreate()–>onStart()–>onResume()–>Activity A的onStop();如果Activity B是完全透明的,则最后不会调用Activity A的onStop();如果是对话框Activity,同后种情况。

Q4:谈谈onSaveInstanceState()方法?何时会调用?

  • 技术点:Activity重建

  • 思路:可从使用场景、调用次序上解释

  • 参考回答:当非人为终止Activity时,比如系统配置发生改变时导致Activity被杀死并重新创建、资源内存不足导致低优先级的Activity被杀死,会调用 onSavaInstanceState() 来保存状态。该方法调用在onStop之前,但和onPause没有时序关系。

  • 引申:可再谈谈它和onRestoreInstanceState()的关系以及后者的作用

Q5:onSaveInstanceState()与onPause()的区别?

  • 技术点:Activity重建

  • 思路:可从适用场景出发

  • 参考回答:onSaveInstanceState()适用于对临时性状态的保存,而onPause()适用于对数据的持久化保存。

Q6:如何避免配置改变时Activity重建?

  • 技术点:Activity重建

  • 思路:一种解决思路是设置配置文件中Activity的configChanges属性

  • 参考回答:为了避免由于配置改变导致Activity重建,可在AndroidManifest.xml中对应的Activity中设置android:configChanges=“orientation|screenSize”。此时再次旋转屏幕时,该Activity不会被系统杀死和重建,只会调用onConfigurationChanged。因此,当配置程序需要响应配置改变,指定configChanges属性,重写onConfigurationChanged方法即可。

Q7:优先级低的Activity在内存不足被回收后怎样做可以恢复到销毁前状态?

  • 技术点:Activity重建

  • 思路:可从Activity重建会被调用的方法出发

  • 参考回答:优先级低的Activity在内存不足被回收后重新打开会引发Activity重建。Activity被重新创建时会调用onRestoreInstanceState(该方法在onStart之后),并将onSavaInstanceState保存的Bundle对象作为参数传到onRestoreInstanceState与onCreate方法。因此可通过onRestoreInstanceState(Bundle savedInstanceState)和onCreate((Bundle savedInstanceState)来判断Activity是否被重建,并取出数据进行恢复。但需要注意的是,在onCreate取出数据时一定要先判断savedInstanceState是否为空。另外,谷歌更推荐使用onRestoreInstanceState进行数据恢复。

Q8:说下Activity的四种启动模式?(有时会出个实际问题来分析返回栈中Activity的情况)

  • 技术点:Activity启动模式

  • 思路:分条解释四个启动模式的特点

  • 参考回答:

    • standard标准模式:每次启动一个Activity就会创建一个新的实例

    • singleTop栈顶复用模式:如果新Activity已经位于任务栈的栈顶,就不会重新创建,并回调 onNewIntent(intent) 方法

    • singleTask栈内复用模式:只要该Activity在一个任务栈中存在,都不会重新创建,并回调 onNewIntent(intent) 方法。如果不存在,系统会先寻找是否存在需要的栈,如果不存在该栈,就创建一个任务栈,并把该Activity放进去;如果存在,就会创建到已经存在的栈中

    • singleInstance单实例模式:具有此模式的Activity只能单独位于一个任务栈中,且此任务栈中只有唯一一个实例

Q9:谈谈singleTop和singleTask的区别以及应用场景

  • 技术点:Activity启动模式

  • 思路:可先解释两个启动模式的含义(见上一个问题),再总结不同点,最后给出应用实例

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数Android工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Android移动开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
img
img
img
img
img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Android开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新

如果你觉得这些内容对你有帮助,可以添加V获取:vip204888 (备注Android)
img

作者2013年从java开发,转做Android开发,在小厂待过,也去过华为,OPPO等大厂待过,18年四月份进了阿里一直到现在。

参与过不少面试,也当面试官 面试过很多人。深知大多数初中级Android工程师,想要提升技能,往往是自己摸索成长,不成体系的学习效果低效漫长,而且极易碰到天花板技术停滞不前!

我整理了一份阿里P7级别的最系统的Android开发主流技术,特别适合有3-5年以上经验的小伙伴深入学习提升。

主要包括阿里,以及字节跳动,腾讯,华为,小米,等一线互联网公司主流架构技术。如果你想深入系统学习Android开发,成为一名合格的高级工程师,可以收藏一下这些Android进阶技术选型

我搜集整理过这几年阿里,以及腾讯,字节跳动,华为,小米等公司的面试题,把面试的要求和技术点梳理成一份大而全的“ Android架构师”面试 Xmind(实际上比预期多花了不少精力),包含知识脉络 + 分支细节。

Java语言与原理;
大厂,小厂。Android面试先看你熟不熟悉Java语言

高级UI与自定义view;
自定义view,Android开发的基本功。

性能调优;
数据结构算法,设计模式。都是这里面的关键基础和重点需要熟练的。

NDK开发;
未来的方向,高薪必会。

前沿技术;
组件化,热升级,热修复,框架设计

网上学习 Android的资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。希望这份系统化的技术体系对大家有一个方向参考。

我在搭建这些技术框架的时候,还整理了系统的高级进阶教程,会比自己碎片化学习效果强太多,CodeChina上可见;

当然,想要深入学习并掌握这些能力,并不简单。关于如何学习,做程序员这一行什么工作强度大家都懂,但是不管工作多忙,每周也要雷打不动的抽出 2 小时用来学习。

不出半年,你就能看出变化!

本文已被CODING开源项目:《Android学习笔记总结+移动架构视频+大厂面试真题+项目实战源码》收录

一个人可以走的很快,但一群人才能走的更远。如果你从事以下工作或对以下感兴趣,欢迎戳这里加入程序员的圈子,让我们一起学习成长!

AI人工智能、Android移动开发、AIGC大模型、C C#、Go语言、Java、Linux运维、云计算、MySQL、PMP、网络安全、Python爬虫、UE5、UI设计、Unity3D、Web前端开发、产品经理、车载开发、大数据、鸿蒙、计算机网络、嵌入式物联网、软件测试、数据结构与算法、音视频开发、Flutter、IOS开发、PHP开发、.NET、安卓逆向、云计算

AI人工智能、Android移动开发、AIGC大模型、C C#、Go语言、Java、Linux运维、云计算、MySQL、PMP、网络安全、Python爬虫、UE5、UI设计、Unity3D、Web前端开发、产品经理、车载开发、大数据、鸿蒙、计算机网络、嵌入式物联网、软件测试、数据结构与算法、音视频开发、Flutter、IOS开发、PHP开发、.NET、安卓逆向、云计算

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值