![](https://img-blog.csdnimg.cn/20201014180756757.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Android系统面试题全解析
文章平均质量分 93
Android发展已经很多年,网上面对Android开发的面试基本都集中在Android应用部分,关于Android系统、Framework层的面试题解析比较少,对面试题后蕴含的知识点总结也比较零散。
基于此,本专栏旨在为Android系统开发方面,提供典型的、全面的面试题解析。只需要花一杯奶茶的钱
码遍天涯
这个作者很懒,什么都没留下…
展开
-
第一章 深入解析Binder
全解析Binder通讯机制的原理原创 2023-04-16 18:30:00 · 184 阅读 · 0 评论 -
第二章 JNI详解
否则,它返回一份副本。Java方法被调用时,JVM会生成对应的 native 方法名,例如 com.example.StrHelper.getStr() ,JVM会在JNI库中查找 Java_com_example_StrHelper_getStr 函数,如果找到了,就会保存一个该 JNI 函数的指针,直接调用该指针。我们都知道,java的数据类型和C/C++的数据类型并不一致,典型的例子是:java中的String是一个引用数据类型,但在C语言中的String是以NULL结尾的字符串数组。原创 2023-06-16 09:19:00 · 301 阅读 · 0 评论 -
第三章 Android系统启动流程
Android系统是基于Linux系统,所以当我们开机的时候,第一个启动的是Init进程,而后面所有的进程都是Init的子进程,Zygote就是Init进程通过解析init.rc文件之后,启动的一个进程。在运行Android程序后首先会启动init 进程,此进程是Linux 系统中用户空间的第一个进程,进程编号为1。多线程问题:zygote是通过fork生成进程的,而多线程是不允许使用fork的,否则可能造成死锁,同时binder又是多线程的,所以干脆不同binder而使用socket。原创 2023-06-16 09:26:08 · 203 阅读 · 0 评论 -
第四章 AMS深入浅出
一个App是可能有多个TaskRecord存在的,一般情况下,启动App的第一个activity时,AMS为其创建一个TaskRecord任务栈特殊情况,启动singleTask的Activity,而且为该Activity指定了和包名不同的taskAffiffiffinity,也会为该activity创建一个新的TaskRecord。对AMS 调用轨迹分析是我们破解AMS的第一条线,希望读者反复阅读,以真正理解其中涉及的知识点,尤其是和Android运行环境及Context相关的知识。原创 2023-06-16 09:39:21 · 159 阅读 · 0 评论