文章目录
前言
今天闲暇之余来整理一下工作中经常使用知识,比较枯燥和基础,特此记录,我称其为安卓八股文,当然安卓的东西非常的多,这里只记录比较常见的,话虽如此,也很多很多了。
下文会比较枯燥,因为是整理所以很多都是链接
一、Android之四大组件、六大布局、五大存储
四大组件
二、安卓线程原理
1、基础使用
继承Thread类
实现Runnable接口
Handler
2、复合使用
AsyncTask
HandlerThread
IntentService
3、高级使用
线程池(ThreadPool)
Android实现多线程的几种方式
三、安卓开源框架
一些主流的:
网络框架
OKHttp详解
android retrofit 从无知到入门(retrofit是基于OKHttp封装)
sqllite数据库框架
greendao
room(jecpack)
数据绑定
Android ButterKnife(黄油刀)的使用
响应式编程框架
rxjava
小众的(博主自己工作涉及到的,还是比较火的,这边就不分类了)
第三方接入经验,这个的话就多了,支付宝微信讯飞极光之类的巴拉巴拉,很多,要有自己的经历才能说得出来了
三、安卓架构MVC、MVP、MVVM
四、设计模式
虽然是在java语言角度上写的,但是写的真的非常好
Java常见设计模式总结
面试题整理
不是什么大厂,就是博主自己去面试问到的一些问题,比较基础,但我第一次遇到的时候真的有没反应过来的问题,整理过的知识点的面试题就没有单独拿出来了
1.Activity A 跳转到 Activity B,生命周期的执行过程
Activity A 跳转到 Activity B,生命周期的执行过程
妈妈不担心系列之Activity的生命周期
这个文章题目比较。。。但是内容比较全
2.Android广播接收器(BroadcastReceiver)的启动优先级问题
Android广播接收器(BroadcastReceiver)的启动优先级问题
3.五大存储(见上文 Android之四大组件、六大布局、五大存储)
4.Android自定义view的种类
1.自绘控件,继承view,重写onDraw方法,在其中进行绘制,需要自己适配边距等等
2.继承ViewGroup派生的特殊Layout,主要用于实现自定义布局,也需要自己适配边距等
3.继承特定的View(如TextView等),不用自己适配支持wrap_conten,match_parent,可以给其加入新的功能
4.继承特定的ViewGroup,例如linearlayout,多用于多个控件的组合view,也不用自己去做适配
5.(个人补充,依据自己的经验说)activity设置弹窗模式
5.Activity 的四种启动模式
standard
每次启动都会重新创建一个实例,不管这个 Activity 在栈中是否已经存在。谁启动了这个 Activity,那么 Activity 就运行在启动它的那个 Activity 所在的栈中。用 Application 去启动 Activity 时会报错,原因是非 Activity 的 Context 没有任务栈。解决办法是为待启动 Activity 制定 FLAG_ACTIVITY_NEW_TASH 标志位,这样就会为它创建一个新的任务栈。
singleTop
如果新 Activity 位于任务栈的栈顶,那么此 Activity 不会被重新创建,同时回调 onNewIntent 方法。onCreate 和 onStart 方法不会被执行。
singleTask
这是一种单实例模式。如果不存在 activity 所需要的任务栈,则创建一个新任务栈和新 Activity 实例;如果存在所需要的任务栈,不存在实例,则新创建一个 Activity 实例;如果存在所需要的任务栈和实例,则不创建,调用 onNewIntent 方法。同时使该 Activity 实例之上的所有 Activity 出栈。
参考:taskAffinity 属性用于标识 Activity 所需要的任务栈,相同标识的 Actvity 会在同一个栈中。
singleIntance
单实例模式。具有 singleTask 模式的所有特性,同时具有此模式的 Activity 只能独自位于一个任务栈中。所以每次都会新建一个栈。
可以通过命令行 adb shell dumpsys activity 命令查看栈中的 Activity 信息。
6.单例模式下如果想要三个实例怎么写
在判空的地方根据不同的次数返回不同的实例(这个是个人理解,如有错误请在评论区加以指正)
后面问了技术群的群友才明白面试官想问的是什么,大佬说估计他是想问 线程间想实现不同的单例怎么做 因为平时说的单例是进程间的,然后面试官菜一点 没问到点子上。
然后还有说问的是设计模式中的享元模式,因为不常用,一是没有想起来(懊恼)
7.Java四种引用
这个问题是我自己说用到了弱引用解决activity内存泄漏问题衍生出来的。
Java四种引用
8.Android 事件分发机制
这个问题应该也比较基础吧,但是平常开发当中也就只是用一下onTouchEvent()这个方法,没有深究过,还是应该掌握的
Android 事件分发机制
9.插件化
这个问题是面试的人可能问的比较深了,我没怎么答得上来因为我开发的项目只有组件化没有插件化,但是如果要往这个方面发展的话,还是需要掌握的,初中级的话稍微了解说得出来应该就没问题了
【Android 插件化】插件化简介 ( 组件化与插件化 )
总结
站在巨人的肩膀上,吃透找工作轻轻松松啦,后面再有面试再补充
2022.7.20收到了一家满意的offer,本篇文章在下次换工作的时候再更新,当然可能就不是初中级了,哈哈,