- 博客(33)
- 资源 (7)
- 收藏
- 关注
原创 Zygote如何启动SystemServer进程?
我们知道了Zygote进程负责启动Systemserver进程的。在这篇文章中,我们具体讲讲Zygote启动SystemServer进程时,经历了什么?SystemServer主要是用来创建各种系统服务的,像AMS、PMS、WMS等常见的系统服务,都是在SystemServer进程里创建的,它们并没有属于自己的一个进程。
2023-07-28 16:12:22
238
原创 Android屏幕自动适配
在Android开发中,碎片化比较严重,不同机器设备,有千奇百怪的分辨率,而如果想要我们的UI,在不同分辨率的设备上显示比例一致的话,就要去适配不同的分辨率。所以就出现了多种UI尺寸的适配方案。
2023-07-19 11:37:17
456
原创 解析zygote启动过程
在Android系统中,Dalvik虚拟机或者是ART,应用程序进程,还有运行系统的关键服务(比如SystemServer等)进程都是由zygote来创建的,zygote通过fork来创建子进程。。通过,我们能知道zygote进程是由init进程启动时创建而成的。这里有个小知识点:起初zygote进程的名称并不是叫“zygote”,在源码中能看到它修改进程名为zygote的地方,代码(frameworks/base/cmds/app_process/
2023-07-17 12:14:49
268
原创 解析init.rc文件
在中,我们知道了init进程启动后,会去解析init.rc配置文件,然后会去启动zygote进程。这篇文章我们就来简单分析下init.rc文件是如何被解析并启动zygote的。以下分析的源码版本号:Android 8.0。
2023-07-17 12:13:28
362
原创 Android系统启动流程
本篇文章我们不会涉及到源码,只是对Android系统的启动流程做一个简单的介绍;注意:该篇文章并不会很详细地去讲到系统启动的各个环节,只会涉及到几个重要的点而已。
2023-07-17 12:11:12
417
原创 retrofit、okhttp3在Android4.4报NoSuchMethodError、Expected Android API level 21+ but was 19错误的解决方法
retrofit、okhttp3在Android4.4报NoSuchMethodError错误的解决方法;retrofit、okhttp3适配Android4.4
2022-10-25 15:47:44
2184
原创 首次启动App,Application里的onCreate方法是如何被调用到的?
我们知道onCreate是Activity的第一个生命周期,但是为什么它是第一个呢,它是怎么被触发调用的?在这里就调用了app的onCreate方法。
2022-09-13 17:00:54
1621
原创 Android事件分发的底层原理
在Android中,Touch事件的分发分服务端和应用端。在服务端由WindowManagerService(借助InputManagerService)负责采集和分发的,在应用端则是由ViewRootImpl(内部有一个mView变量指向View树的根,负责控制View树的UI绘制和事件消息的分发)负责分发的。当输入设备可用时,比如触屏,Linux内核会在/dev/input中创建对应的设备节点。IMS(InputManagerService)所做的工作...
2022-02-27 14:14:11
2199
原创 关于RecyclerView的缓存
RecyclerView有4级缓存如下:层级 缓存变量 缓存名 容量 数据结构 缓存用途 1 mChangeScrap 可见缓存 x(无限制) ArrayList 快速知道哪个可见的View被移除还是被添加 2 mCachedViews 缓存列表 2 ArrayList 用于移除屏幕的View的回收和复用 3 mViewCacheExtension 自定义缓存 x 一般不
2022-02-26 17:23:30
4305
原创 kotlin中的var和val与编译时常量
我们都知道,在kotlin中,var定义的变量是可读可变的,而val定义的变量是只读不可变的,这是为什么呢?这里我们来看下面的代码:class Player{ val name = "jack" var age = 11}这里我简单的定义了一个Playerl类,里面有个val定义的变量name,还有一个var定义的变量age,我们把这段Kotlin代码转换为java代码来看下:这是转换后的java代码,这下我们就知道了,但我们用var定义的变量时,编译器会自动帮我们写好.
2021-12-06 15:43:25
2440
原创 Android Jetpack Navigation的使用
Navigation可用于Fragment之间的跳转第一步:先建立好两个fragment第二步:在res文件夹下,新建一个navigation的文件夹,并创建文件第三步:打开刚才建好的的nav.xml,加入前面建好的两个fragment,并建立连接...
2021-09-16 09:51:26
316
原创 JetPack Compose简单介绍
它是2019 年 I/O 大会上公布的新的 UI 库,在今年下半年会发布它的正式版。既然它是一个UI库,那就要和我们传统写UI的方式作对比了。①传统写UI的方式:就是先在建立一个xml文件,在里面写好布局好,再回到Java文件(或者是Kotlin文件)里去把控件实例化出来后,再去调用。②Compose这个库:或者说它是一个框架,它重新定义了Android UI的写法,不再使用xml文件了,而是直接在Kotlin文件(只支持Kotlin)里,写布局的代码。官方对Compose的评价是“让困
2021-06-29 11:17:43
7042
6
原创 Android 布局优化
尽量删除无用的控件和层级;如果布局中既可以使用LinearLayout,也可以使用RelativeLayout,那么就采用LinearLayout,因为RelativeLayout的功能比较复杂,它的布局过程需要花费更多的CPU时间。FrameLayout和LinearLayout一样都是一种简单高效的ViewGroup。...
2021-06-21 10:29:33
135
2
原创 Android的控件绑定----ViewBinding
在Android开发中,控件的绑定是开发者无法绕开的一道程序。是Android开发中最原始,也是最基础的一种获取View的方法。在一个复杂布局的页面时,我们要一个个控件去调用findViewById方法去绑定,代码量会增多。那有什么方法能让我们findView更简单些呢,也让我们的代码能变得更加简洁,请往下看:·ViewBindingViewBinding是Google在2019年I/O大会上公布的一款Android视图绑定工具,也是Google强烈推荐我们使用的。原理:Google在Andro
2021-05-18 22:52:13
3513
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人