有必要去研究Handler和Binder么?这些问题你会么

经常会有人问:有必要去研究Handler和Binder么?

感觉工作中好像用不到呀。

有必要去研究Handler和Binder么?这些问题你会么

学完新知识的我…

以前开始学习Android的时候,有时候想研究源码,研究一些Android底层原理,只能去翻书,或者向其他公司的大牛请教,一个疑问有时候会卡好几天。

那时候只要了解四大组件、视图、网络请求,你就能拿到一份薪资丰厚的offer;当时,如果你要是精通Java基础,知道如何处理OOM,组件生命周期原理,熟悉Android源码、架构体系,进阿里腾讯都是很轻松。

现在,你只会这些再出去试试?

现在面试对Android开发者的要求越来越高了!尤其是阿里、头条、腾讯等大厂,面试问的很多都是原理。

有必要去研究Handler和Binder么?这些问题你会么

Android Framework的三大核心功能:

1、ActivityManagerService.Java:AMS 管理Android所有应用程序的四大组件;

2、PackageManagerService.Java:PMS 处理包管理相关的工作,常见的比如安装、卸载应用等;

3、WindowManagerService.Java:WMS 为所有应用程序分配窗口,并管理这些窗口。

众所周知,程序代码是死的,系统运转是活的,各模块代码运行在不同的进程(线程)中,想要真正理解安卓的这几大服务,势必要掌握安卓的通信机制,而安卓最主要的两个通信机制就是Handler和Binder。来来来,看看这几道大厂关于Handler和Binder的面试真题,能不能答上来?

1、一个线程有几个Handler?

2、Handler 内存泄漏原因?为什么其他的内部类没有说过有这个问题?

3、为何主线程可以new Handler?如果想要在子线程中new Handler要做些什么准备?

4、子线程中维护的Looper,消息队列无消息的时候的处理方案是什么?有什么用?

5、既然可以存在多个Handler往MessageQueue中添加数据(发消息时各个Handler可能处于不同线程),那它内部是如何确保线程安全的?

6、我们使用Message时应该如何创建它?

7、Looper死循环为什么不会导致应用卡死?

8、Binder有什么优势?(字节跳动)

9、Binder是如何做到一次拷贝的?(腾讯)

10、MMAP的原理讲解;(腾讯)

11、为什么Intent不能传递大数据?(阿里)

12、描述AIDL生成的Java类细节;(字节跳动)

13、四大组件底层的通信机制;(字节跳动)

14、为什么Intent不能传递大数据?(阿里)

一线企业的app都是多线程和多进程的,而Android进程间通信机制就是Binder,原生的线程间通信则是Handler,Binder和Handler是了解安卓运行机制必须要掌握的一个知识点,更是一线企业面试必问的知识点!

看了这些问题,你克你都打上来么?还会觉得没有必要去研究Handler和Binder么?

猜你喜欢

转载自blog.csdn.net/EnjoyEDU/article/details/108345705