![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Android Fragment
Android Fragment源码解析
milan-xiao-tiejiang
2015年开始Android App开发,精通Java、Kotlin、c++等Android开发语言,阅读过系统源码及多方Android主流框架,对 vue、flutter等也有一定的认知。
Java方向技术全面,熟练掌握Spring、MySQL等Java Web相关技术,掌握分布式架构体系。
2020年转向c++工程师,重新系统学习c++语法,目前从事清洁服务机器人相关领域。
tip:北京寻求Android、c++职位
展开
-
SystemServer源码分析
Zygote 进程通过 fork() 创建出 SystemServer,SystemServer进程继承了 Zygote 进程所有状态 private static Runnable forkSystemServer(String abiList, String socketName, ZygoteServer zygoteServer) {//... ...原创 2020-04-26 19:53:53 · 210 阅读 · 0 评论 -
Zygote进程启动过程
Zygpte 进程的启动脚本Zygote 进程是在 init 进程启动时创建的,Zygote 的启动脚本在system/core/rootdir 目录下,这里不详细说 init 进程启动过程了,它可以简单描述为解析 init.rc ,启动相应的脚本init.zygote32.rc 代码#zygote配置文件相关init.rcservice zygote /system/bin/a...原创 2020-04-26 18:42:49 · 252 阅读 · 0 评论 -
由VirtualAPK了解插件化原理(二)
Android四大组件由于要和AMS频繁通信,AMS在SystemServer进程中,无法直接修改,所以四大组件的插件化是重中之重。Activity插件化首先必须了解Activity启动过程,这里不多介绍启动流程,放一张图可以看下,图是7.0的启动顺序。预先在AndroidManifest.xml中注册Activity来占坑,用来通过AMS的校验。VirtualAPK中占坑的...原创 2020-04-05 17:19:21 · 232 阅读 · 0 评论 -
由VirtualAPK了解插件化原理(一)
上篇了解了热修复原理,热修复技术主要用来修复bug,插件化则主要解决应用越来越庞大以及功能模块的解耦。插件化处理两部分业务,一种是自身的业务模块,一种是接入其他的应用业务。这种方式在淘宝、支付宝、美团、滴滴、360 等航母应用上十分常见。代表方案有阿里的 Atlas、360 的 RePlugin、滴滴的 VirtualAPK 等。插件化的apk分为宿主和插件两部分组成,先被安装到手机中的apk...原创 2020-04-05 13:48:01 · 368 阅读 · 0 评论 -
源码解读Binder机制四(深入解析)
在第二篇中说到了BpBinder::transact调用了IPCThreadState::self()->transact,我们看下具体实现细节,注意这里是BpBinder的transactstatus_t IPCThreadState::transact(int32_t handle, uint32_t code, ...原创 2020-03-30 18:39:14 · 579 阅读 · 0 评论 -
源码解读Binder机制三(Clent 端如何获取 Service实例)
上文的篇幅很长,介绍了ServiceManager的启动流程,以SurfaceFlinger为例,介绍了它的简单启动流程和如何将自身添加到ServiceManager中。这篇了解下Clent端如何获取Service。ContextThemeWrapper @Override public Object getSystemService(String name) { ...原创 2020-03-30 16:37:03 · 461 阅读 · 1 评论 -
源码解读Binder机制二(SurfaceFlinger 如何向 ServiceManager 注册)
上文用简单的AIDL实例应用程序之间的进程间通讯,它是一种c/s架构。client端:Proxy.transact()来发送事务请求;server端:Stub.onTransact()会接收到相应事务。这篇介绍Server如何通过binder向ServiceManager注册服务的?ServiceManager源码中用到binder最多的就是ServiceManager。Bin...原创 2020-03-30 14:18:53 · 602 阅读 · 0 评论 -
源码解读 Binder 机制一(一个简单的 AIDL 实例)
先从一个简单的AIDL看如何跨进程通讯。定义AIDL:interface IMyAidlInterface { /** * Demonstrates some basic types that you can use as parameters * and return values in AIDL. */ String basicTypes...原创 2020-03-29 15:58:14 · 246 阅读 · 0 评论 -
android源码中的反射、代理的应用
1、反射反射机制是 Java 语言提供的一种基础功能,通过反射我们可以直接操作类或者对象,比如获取某个对象的类定义,获取类声明的属性和方法,调用方法或者构造对象,甚至可以运行时修改类定义。java.lang 或 java.lang.reflect 包下的相关抽象,就会有一个很直观的印象了。Class、Field、Method、Constructor 等,可以操作类和对象。反射提供的 A...原创 2020-03-28 15:17:43 · 386 阅读 · 0 评论 -
Handler源码解读(四)
IdleHandler的定义,这里返回true,表示下次空闲时还会触发。 public static interface IdleHandler { boolean queueIdle(); }它的用法 private MessageQueue.IdleHandler mIdleHandler = new MessageQueu...原创 2020-03-23 09:49:20 · 141 阅读 · 0 评论 -
Handler源码解读(三)
今天重点研究下Handler消息延迟Handler的sendMessageDelayed public final boolean sendMessageDelayed(Message msg, long delayMillis) { if (delayMillis < 0) { delayMillis = 0; ...原创 2020-03-22 17:44:51 · 110 阅读 · 0 评论 -
Handler源码解读(二)
上文介绍了Handler的创建,今天看下消息的传递机制首先发送一个消息,Handler的sendMessage和post public final boolean post(Runnable r) { return sendMessageDelayed(getPostMessage(r), 0); } public final boolea...原创 2020-03-22 17:07:48 · 226 阅读 · 0 评论 -
Handler源码解读(一)
Handler构造函数 public Handler() { this(null, false); } public Handler(Callback callback, boolean async) { // mLooper = Looper.myLooper(); if (mLooper == nul...原创 2020-03-22 15:57:24 · 165 阅读 · 0 评论