
framework
文章平均质量分 77
放开那只肥鸡
Android移动开发
展开
-
Message享元模式学习
android是如何对Message进行复用的java的类是由成员变量+构造函数+成员方法组成->先看成员变量一开始的获取Message对象如何回收第一次进来第二次进来第三次进来回过头来我们再看获取message到了这里想必大家都明白它的核心是什么了吧?java的类是由成员变量+构造函数+成员方法组成->先看成员变量涉及复用的关键成员变量有:Message next;private static Message sPool;private static int sPoolSize =原创 2022-05-18 15:15:40 · 447 阅读 · 0 评论 -
插件化学习
插件化学习什么是插件化一级目录一级目录一级目录一级目录二级目录三级目录什么是插件化也可以说插件化是有什么效果。我们平时开发当中的app,主apk,称之为宿主APP。下载下来的APK,称之为插件app一级目录一级目录一级目录一级目录二级目录三级目录...原创 2021-09-22 19:06:21 · 251 阅读 · 0 评论 -
startActivity流程学习
1、应用完全没有启动过。launcher从sm(管理java层的ServiceManager)的服务列表里面找到AMS的代理对象AMSProxy,调用AMS向Zygote发出socket请求,从Zygote进程fork出一个app进程。在App获取ams --》getService(“activity”)是比较容易的,它拥有了AMS的代理对象但是反过来,AMS它是管理我们的APP,那么它是如何调用我们呢?App里面也存在一个binder对象IApplicationThread接口里面实现了binde原创 2021-06-17 21:24:48 · 2519 阅读 · 0 评论 -
ActivityManagerService学习
ActivityManagerService简称AMS,单单这个类本身就超过2万7千行代码,涉及到的类加起来更是一个天文数字,虽然不像前面的启动流程都是底层C和C++代码,但是如果不是做这一块的开发的话还是主要了解为主,扩展一下知识面。AMS是什么?1.从java角度来看,ams就是一个java对象,实现了Ibinder接口,所以它是一个用于进程之间通信的接口,这个对象初始化是在systemServer.java 的run()方法里面2. AMS是一个服务ActivityManagerServic原创 2021-06-01 19:47:29 · 731 阅读 · 1 评论 -
andorid启动流程学习
一个Android手机从按下开机键开机Boot rom(开机键) --》Boot loader(引导程序) – 》kernel(拉起linxu内核) --》init(调起应用用户太第一个进程,主要是解析init.rc,根据不同的文件类型创建不同的解析器。)(pid == 1,c++framework、native)–》Zygote(上一个init会调起一系列的进程服务,包括Zygote)(android runtime)–》system service(Zygote会调SystemService进程)–》原创 2021-05-16 23:14:28 · 266 阅读 · 2 评论 -
Handler学习
我们打开一个app从点击屏幕lancher–》zygote–>jvm–>ActivityThread.main下面的代码我们只关注handler相关即可,AMS后面另外写学习总结。Looper.prepareMainLooper();Looper.loop(); public static void main(String[] args) { Trace.traceBegin(Trace.TRACE_TAG_ACTIVITY_MANAGER, "ActivityThre原创 2021-05-16 14:49:51 · 251 阅读 · 0 评论 -
binder学习
binder是什么?进程间通信机制是一个驱动Binder.java–>实现了Ibinder–夸进程能力linux进程间通讯有哪些?管道、socket、信号量、共享内存…共享内存逻辑控制太复杂,易用性差,通信的时候直接读取,不同拷贝传统IPC例如socket需要拷贝两次,基于c/s架构,传输效率低,开销大上面两种都是基于上层协议,访问接入点是开放的,不安全。Binder,只需拷贝一次,基于c/s架构,易用性高,为每个APP分配UID,同时支持匿名和实名。进程间是怎么通讯的?进程A想原创 2021-05-15 21:56:06 · 548 阅读 · 0 评论