漫画:面向 API 开发,左小白 Java 基础薄弱,上次面试被暴露无遗,虽然学校里学过,但是工作来就一直做 Android,那些 Java 基础都还给老师来,但为了不要再栽在 Java 上,左小白恶补了 Java 面试题,不久,又有面试电话来了。

漫画:越挫越勇_java

左小白把事前准备好的 APP 打开了,递给了面试官。

漫画:越挫越勇_java_02

咦,这个面试官,挺好的,小白心里暗喜。

漫画:越挫越勇_java_03

擦,好像答错了,应该先 onPause,再 onStop。

漫画:越挫越勇_java_04

这么快结束了啊,看样子这次面试又挂了!

漫画:越挫越勇_java_05

又是等通知,等了几天,依旧没结果,左小白伤心了,面试官挺好的,面试的也较基础,只能怪自己学艺不精,能力不够。他总结要回顾了下自己在项目遇到了什么问题,面试官可能会从中考察,必须要搞明白,不然自己做的项目,却不知道,那岂不是很尴尬;虽然这次没怎么考察 Java,但也得要看看,还得刷题。

附面试题答案1、Activity 启动模式standard默认启动模式,在这种模式下启动的 Activity 可以被多次实例化,即在同一个任务中可以存在多个 Activity 的实例。

singleTop如果一个以 singleTop 模式启动的 Activity 的实例已经存在于任务桟的桟顶,那么再启动这个 Activity 时,不会创建新的实例,而是重用位于栈顶的那个实例,并且会调用该实例的 onNewIntent() 方法将 Intent 对象传递到这个实例中。

singleTasksingleTask 模式的 Activity 只允许在系统中有一个实例。如果系统中已经有了一个实例,持有这个实例的任务将移动到顶部,同时 intent 将被通过 onNewIntent() 发送。如果没有,则会创建一个新的 Activity 并置放在合适的任务中。

singleInstance总是在新的任务中开启,并且这个新的任务中有且只有这一个实例,也就是说被该实例启动的其他 Activity 会自动运行于另一个任务中。

2、Activity 生命周期

正常启动onCreate –> onStart –> –> onResume –> onPause –> onStop –> onDestroy

防止变相考察:

转向下一个 ActivityonPause –> onSaveInstanceState –> onStop

从下一个 Activity 返回当前(按机器返回键)onRestart –> onStart –> onResume –> onPostResume

转向上一个 Activity(按机器返回键)onPause –> onStop –> onDestory

屏幕待机(黑掉)onPause

屏幕变亮onResume –> onPostResume

Home 键退出onPause –> onSaveInstanceState –> onStop

Home 键导航返回onRestart –> onStart –> onResume –> onPostResume

3、图片框架Android-Universal-Image-Loader 是比较早也是比较有名的的图片加载框架,现在作者已经不维护了,当下推荐 Glide,另外也要对图片加载原理适当了解。

4、自定义 View主要有三个流程,onMeasure 测量,onLayout 布局, onDraw 绘制,当然想更好自定义 View,还得深入 Android 画笔Paint ,Android 画布Canvas