12.Bitmap
-
Bitmap 内存占用的计算
-
getByteCount() & getAllocationByteCount()的区别
-
Bitmap的压缩方式
-
LruCache & DiskLruCache原理
-
如何设计一个图片加载库
-
有一张非常大的图片,如何去加载这张大图片
-
如果把drawable-xxhdpi下的图片移动到drawable-xhdpi下,图片内存是如何变的。
-
如果在hdpi、xxhdpi下放置了图片,加载的优先级。如果是400_800,1080_1920,加载的优先级。
13.mvc&mvp&mvvm
-
MVC及其优缺点
-
MVP及其优缺点
-
MVVM及其优缺点
-
MVP如何管理Presenter的生命周期,何时取消网络请求
14.Binder
-
Android中进程和线程的关系,区别
-
为何需要进行IPC,多进程通信可能会出现什么问题
-
Android中IPC方式有几种、各种方式优缺点
-
为何新增Binder来作为主要的IPC方式
-
什么是Binder
-
Binder的原理
-
Binder Driver 如何在内核空间中做到一次拷贝的?
-
使用Binder进行数据传输的具体过程
-
Binder框架中ServiceManager的作用
-
什么是AIDL
-
AIDL使用的步骤
-
AIDL支持哪些数据类型
-
AIDL的关键类,方法和工作流程
-
如何优化多模块都使用AIDL的情况
-
使用 Binder 传输数据的最大限制是多少,被占满后会导致什么问题
-
Binder 驱动加载过程中有哪些重要的步骤
-
系统服务与bindService启动的服务的区别
-
Activity的bindService流程
-
不通过AIDL,手动编码来实现Binder的通信
15.内存泄漏&内存溢出
-
什么是OOM & 什么是内存泄漏以及原因
-
Thread是如何造成内存泄露的,如何解决?
-
Handler导致的内存泄露的原因以及如何解决
-
如何加载Bitmap防止内存溢出
-
MVP中如何处理Presenter层以防止内存泄漏的
16.性能优化
-
内存优化
-
启动优化
-
布局加载和绘制优化
-
卡顿优化
-
网络优化
17.Window&WindowManager
-
什么是Window
-
什么是WindowManager
-
什么是ViewRootImpl
-
什么是DecorView
-
Activity,View,Window三者之间的关系
-
DecorView什么时候被WindowManager添加到Window中
18.WMS
-
什么是WMS
-
WMS是如何管理Window的
-
IWindowSession是什么,WindowSession的创建过程是怎样的
-
WindowToken是什么
-
WindowState是什么
-
Android窗口大概分为几种?分组原理是什么
-
Dialog的Context只能是Activity的Context,不能是Application的Context
-
App应用程序如何与SurfaceFlinger通信的
-
View 的绘制是如何把数据传递给 SurfaceFlinger 的
-
共享内存的具体实现是什么
-
relayout是如何向SurfaceFlinger申请Surface
-
什么是Surface
19.AMS
-
ActivityManagerService是什么?什么时候初始化的?有什么作用?
-
ActivityThread是什么?ApplicationThread是什么?他们的区别
-
Instrumentation是什么?和ActivityThread是什么关系?
-
ActivityManagerService和zygote进程通信是如何实现的
-
ActivityRecord、TaskRecord、ActivityStack,ActivityStackSupervisor,ProcessRecord
-
ActivityManager、ActivityManagerService、ActivityManagerNative、ActivityManagerProxy的关系
-
手写实现简化版AMS
20.系统启动
-
android系统启动流程
-
SystemServer,ServiceManager,SystemServiceManager的关系
-
孵化应用进程这种事为什么不交给SystemServer来做,而专门设计一个Zygote
-
Zygote的IPC通信机制为什么使用socket而不采用binder