
framework
卖火柴的小男孩2020
你在驴背上看世界,世界在驴胯下看你
展开
-
ART运行时垃圾收集机制简要介绍和学习计划
1.ART运行时堆的创建过程。 2.ART运行时的对象分配过程。 3.ART运行时的垃圾收集过程。原创 2020-08-17 14:18:53 · 626 阅读 · 0 评论 -
Dalvik虚拟机为新创建对象分配内存,垃圾收集(GC)过程分析
Dalvik虚拟机为新创建对象分配内存的过程分析原创 2020-08-13 10:18:19 · 420 阅读 · 0 评论 -
Android运行时ART简要介绍和学习计划
在上篇中,我们分析到了OatFile的begin_和end_变量分别被指定到了符号oatdata和oatlastword指定的位置。那么指定的这一段数据到底是什么呢?本文会接下来分析。首先来看OatFile::Setup的实现:bool OatFile::Setup() { if (!GetOatHeader().IsValid()) { LOG(WARNING) << "Invalid oat magic for " &l...原创 2020-08-06 19:32:00 · 397 阅读 · 0 评论 -
Android Region代码分析
一、Region的定义和合法性检查在Android系统中,定义了Region的概念,它代表屏幕上的一个区域,它是由一个或多个Rect组成的,代码位于frameworks/native/libs/ui/Region.cpp。而Rect则代表屏幕上的一个方形区域,这个区域可能是不可见的,部分可见或者完全不可见的。从代码实现的角度来看Region的实现,它拥有一个私有的数据成员变量:mStorage,它的类型为Vector<Rect>:1.mStorage是一个有序数组,数组元素类型为Rec.原创 2020-07-31 11:35:42 · 611 阅读 · 0 评论 -
Android应用程序窗口(Activity)的测量(Measure)、布局(Layout)和绘制(Draw)过程分析
从前面Android应用程序窗口(Activity)的绘图表面(Surface)的创建过程分析一文还可以知道,每一个Java层的Surface对象内部都有一块画布,这块画布是通过它的成员变量mCanvas所指向的一个Java层的CompatibleCanvas对象来描述的。so是一个类型为so_t的结构体,它的成员变量canvas描述的是Java层的Surface类的成员变量mCanva在类中的偏移量,因此,通过这个偏移量就可以获得参数clazz所指向的一个Java层的Surface...原创 2020-07-29 13:16:07 · 593 阅读 · 0 评论 -
Android应用程序窗口(Activity)的绘图表面(Surface)的创建过程分析
ndroid应用程序窗口(Activity)的绘图表面(Surface)的创建过程分析原创 2020-07-27 21:36:22 · 745 阅读 · 0 评论 -
Android应用程序窗口(Activity)与WindowManagerService服务的连接过程分析
Android应用程序窗口(Activity)与WindowManagerService服务的连接过程分析原创 2020-07-26 15:18:31 · 427 阅读 · 0 评论 -
Android应用程序窗口(Activity,Window,View)原理解析
Android应用程序窗口(Activity)的运行上下文环境(Context)的创建过程分析ActivityThreadpublic final class ActivityThread { private Activity performLaunchActivity(ActivityClientRecord r, Intent customIntent) { activity = mInstrumentation.newActivity( ...原创 2020-07-23 22:02:34 · 544 阅读 · 0 评论 -
Dalvik虚拟机源码初探
Dalvik虚拟机JNI方法的注册过程分析这些Bridage函数实际上仍然不是直接调用地调用JNI方法的,这是因为Dalvik虚拟机是可以运行在各种不同的平台之上,而每一种平台可能都定义有自己的一套函数调用规范,也就是所谓的ABI(Application Binary Interface),这是一个API(Application Programming Interface)不同的概念。ABI是在二进制级别上定义的一套函数调用规范,例如参数是通过寄存器来传递还是堆栈来传递,而API定义是一个应原创 2020-07-22 20:59:51 · 493 阅读 · 0 评论 -
属性动画特性,Interpolator,TypeEvaluator ,LinearLayout、RelativeLayout,SharedPreferences原理总结
PropertyValuesHolder void setupSetter(Class targetClass) { Class<?> propertyType = mConverter == null ? mValueType : mConverter.getTargetType(); mSetter = setupSetterOrGetter(targetClass, sSetterPropertyMap, "set", propertyType);...原创 2020-07-08 09:50:25 · 219 阅读 · 0 评论 -
Binder系统的C程序使用示例
service_manager.c :struct binder_state *bs; bs = binder_open(128*1024); a. binder_openb. binder_become_context_managerc. binder_loop(bs, svcmgr_handler);void binder_loop(struct binder_state *bs, binder_handler func)Binder.c c.2...原创 2020-06-28 22:18:47 · 693 阅读 · 0 评论 -
编写android灯光系统的hal程序
编写android灯光系统的hal程序Java: frameworks/base/services/core/java/com/android/server/lights/LightsService.javaJNI: frameworks/base/services/core/jni/com_android_server_lights_LightsService.cppHal: lights.c原创 2020-06-25 22:25:35 · 402 阅读 · 0 评论 -
Android灯光系统 框架分析 , Linux的led class驱动
root@android-virtual-machine:/sys/class/leds# cd /root@android-virtual-machine:/# find ./ -name 'leds_4412*'./work/linux-3.0.86/drivers/char/leds_4412.o./work/linux-3.0.86/drivers/char/leds_4412.croot@android-virtual-machine:/...原创 2020-06-23 22:46:19 · 388 阅读 · 0 评论 -
Zygote进程就启动初探
Android系统中的socket机制和binder机制一样,都是可以用来进行进程间通信,读者可以自己对比一下这两者的不同之处,Binder进程间通信机制可以参考Android进程间通信(IPC)机制Binder简要介绍和学习计划一文。参考Android应用程序进程启动过程的源代码分析一文中的Step 4,ActivityManagerService是通过Process.start函数来创建一个新的进程的,而Process.start函数会首先通过Socket连接到Zygo...原创 2020-06-23 17:12:33 · 234 阅读 · 0 评论 -
Flutter framework engine源码初探
下图为flutter源码部分摘要:源码链接原创 2020-06-21 13:19:03 · 716 阅读 · 0 评论 -
Activity启动源码分析
Launcher1,startActivitySafely2,startActivity(Intent=FLAG_ACTIVITY_NEW_TASK表示要在一个新的Task中启动这个Activity) startActivitySafely(intent, opts.toBundle()); public class Launcher { public static void main(String[] args)Acti...原创 2020-06-18 22:46:27 · 220 阅读 · 0 评论 -
Android硬件访问服务框架初探
new SystemServer().run(); System.loadLibrary("android_servers");OnLoad.cpp报警的:register_android_server_AlarmManagerService(env);return jniRegisterNativeMethods(env, "com/android/server/VibratorService", method_table, NELEM(method...原创 2020-06-16 22:31:22 · 269 阅读 · 0 评论 -
Android程序操控LED
v1:放入内核 drivers/char修改 drivers/char/Makefile,添加:obj-y += leds_4412.o重新编译内核v2:把 leds_4412.c 放到drivers/leds修改 drivers/leds/Makefile:obj-y += leds_4412.o重新配置内核make menuconfigCONFIG_LEDS_CLASSCONFIG_LEDS_TRIGGERSCONFIG_LEDS_TRIGGER_TIMER-...原创 2020-06-16 21:15:42 · 264 阅读 · 0 评论 -
Binder系列1—Binder Driver初探
android6.0kernel/drivers/ (不同Linux分支路径略有不同) - staging/android/binder.c - android/binder.c流程如下:IPCZygote socketClient Server ServiceManager binderService ServerService Manager...原创 2020-06-16 14:28:46 · 378 阅读 · 0 评论 -
Android App访问C库
root@android-virtual-machine:/# find ./ -name 'liblog'./work/android-5.0.2/system/core/liblogroot@android-virtual-machine:/work/hal_projects# arm-linux-gcc -fPIC -shared hardcontrol.c -o hardcontrol.so -I /usr/lib/jvm/java-1.7.0-openjdk-amd64/i...原创 2020-06-14 22:50:18 · 333 阅读 · 0 评论 -
app启动流程
总结1.1 流程说明在整个startService过程,从进程角度看服务启动过程Process A进程:是指调用startService命令所在的进程,也就是启动服务的发起端进程,比如点击桌面App图标,此处Process A便是Launcher所在进程。 system_server进程:系统进程,是java framework框架的核心载体,里面运行了大量的系统服务,比如这里提供ApplicationThreadProxy(简称ATP),ActivityManagerService(简称AM原创 2020-06-12 11:58:55 · 682 阅读 · 1 评论 -
android framework进阶
[January 31, 2016][置顶]Android 操作系统架构开篇[June 1, 2019][置顶]Flutter 跨平台演进及架构开篇[March 26, 2020]字节跳动为什么选用Flutter:并非跨平台终极之选,但它可能是不一样的未来[October 19, 2019]彻底掌握Timeline原理(一)[October 12, 2019]ServiceIsolate工作原理[October 5, 2019]Dart虚拟机运行原理[September ...原创 2020-06-11 17:18:53 · 706 阅读 · 1 评论 -
Android FrameWork底层开发视频全套
我的百度云连接链接: https://pan.baidu.com/s/1i64xvjJ 密码: 5ptb我的百度云连接链接: https://pan.baidu.com/s/1i64xvjJ 密码: 5ptb我的百度云连接链接: https://pan.baidu.com/s/1i64xvjJ 密码: 5ptbAndroidFrameWork底层开发视频全...转载 2020-01-09 15:37:31 · 1820 阅读 · 1 评论