面试只答对了这几个问题,公司直接让我立马入职

Android Framework是Android操作系统的核心部分,目前大部分公司的app开发都是基于模块化、层次化、组件化、控件化的思路来设计架构,而这一切的基础都建立在Android Framework系统框架之上。

试想一下,如果没有它提供的一系列的API、类库和服务,我们如何能构建高质量的Android应用程序,正因如此,熟悉它成为了企业招聘Android开发者的要求之一。

这就直接导致,它成为了现在企业常问的面试题。(开发者直言太难了…)

接下来以大厂面试题的方式给大家总结一下Framework内核:

描述一下 android 的系统架构(阿里 咸鱼一面)

从小到上就是:

linux kernel,lib dalvik vm ,application framework, app

Framework 工作方式及原理,Activity 是如何生成一个 view 的,机制是什么(字节架构岗一面)

Framework是android 系统对 linux kernel,lib库等封装,提供WMS,AMS,bind机制,handler-message机制等方式,供app使用。

简单来说framework就是提供app生存的环境。

1)Activity在attch方法的时候,会创建一个phonewindow(window的子类)

2)onCreate中的setContentView方法,会创建DecorView

3)DecorView 的addview方法,会把layout中的布局加载进来。

Activity 创建一个 view 是通过 ondraw 画出来的, 画这个 view 之前呢,还会调用 onmeasure方法来计算显示的大小.

Surfaceview 是直接操作硬件的,因为视频播放对帧数有要求,onDraw 效率太低,不够使,Surfaceview 直接把数据写到显存。

为何主线程可以new Handler如果想要在子线程中new Handler要做些什么准备?(字节架构岗二面)

每一个Handler必须要对应一个Looper主线程就会自动创建Looper对象,不需要我们手动创建,所以主线程可以直接创建Handler

在new Handler的时候没有传入制定的Looper就会默认绑定当前创建Handler的线程的Looper,如果没有Looper就报错。

因为在主线程中,Activity内部包含一个Looper对象,它会自动管理Looper处理子线程中发送过来的消息。而对于子线程而言,没有任何对象帮助我们维护Looper对象,所以需要我们手动维护。

所以要在子线程开启Handler要先创建Looper,并开启Looper循环

如果在子线程中创建一个Handler,那么就必须做三个操作

  1. Prepare();
  2. loop();
  3. quit();
系统启动流程详细分析,学会这些,惊呆面试官

在这里插入图片描述
其实中间还贯穿着许多知识点,在这就不跟大家一一细说。

如果你想更深入更系统性的了解Android Framework架构的话,这里特邀前三星/小米研发经理Avlin老师 ,给大家整理了一份最新版Android Framework源码解析,需要的直接扫码免费领取。

第一章 系统启动流程分析
  • 第一节 Android启动概览
  • 第二节 init.rc解析
  • 第三节 Zygote
  • 第四节 面试题

图片

第二章 跨进程通信IPC解析
  • 第一节 Sercice 还可以这么理解
  • 第二节 Binder基础
  • 第三节 Binder应用
  • 第四节 AIDL应用(上)
  • 第五节 AIDL应用(下)
  • 第六节 Messenger原理及应用
  • 第七节 服务端回调
  • 第八节 获取服务(IBinder)
  • 第九节 Binder面试题全解析

图片

第三章 Handler源码解析
  • 第一节 源码分析
  • 第二节 难点问题
  • 第三节Handler常问面试题

图片

第四章 AMS 源码解析
  • 第一节 引言
  • 第二节 Android架构
  • 第三节 通信方式
  • 第四节 系统启动系列
  • 第五节 AMS
  • 第六节 AMS 面试题解析

图片

第五章 WMS源码解析
  • 第一节 WMS与activity启动流程
  • 第二节 WMS绘制原理
  • 第三节 WMS角色与实例化过程
  • 第四节 WMS工作原理

图片

第六章 Surface源码解析
  • 第一节 创建流程及软硬件绘制
  • 第二节 双缓冲及SurfaceView解析
  • 第三节 Android图形系统综述

图片

第七章 基于Android12.0的SurfaceFlinger源码解析
  • 第一节 应用建立和SurfaceFlinger的沟通桥梁
  • 第二节 SurfaceFlinger的启动和消息队列处理机制
  • 第三节 SurfaceFlinger 之 VSync(上)
  • 第四节 SurfaceFlinger之VSync(中)
  • 第五节 SurfaceFlinger之VSync(下)

图片

第八章 PKMS源码解析
  • 第一节 PKMS调用方式

  • 第二节 PKMS启动过程分析

  • 第三节 APK的扫描

  • 第四节 APK的安装

  • 第五节 PKMS之权限扫描

  • 第六节 静默安装

  • 第七节 requestPermissons源码流程解析

  • 第八节 PKMS面试题

图片

第九章 InputManagerService源码解析
  • 第一节 Android Input输入事件处理流程(1)
  • 第一节 Android Input输入事件处理流程(2)
  • 第一节 Android Input输入事件处理流程(3)

图片

第十章 DisplayManagerService源码解析
  • 第一节 DisplayManagerService启动
  • 第二节 DisplayAdapter和DisplayDevice的创建
  • 第三节 DMS部分亮灭屏流程
  • 第四节 亮度调节
  • 第五节 Proximity Sensor灭屏原理
  • 第六节 Logical Display和Physical Display配置的更新

图片

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值