- 博客(31)
- 收藏
- 关注
原创 【算法与数据结构】【链表篇】【题1-题5】
题目:输入一个链表的头结点,从尾到头反过来打印出每个节点的值。思路:要反过来打印,首先需要遍历,那么从先遍历的节点后打印,典型的后进先出,符合栈的结构。
2024-11-07 23:16:04
1111
原创 【android12】【AHandler】【4.AHandler原理篇ALooper类方法全解】
前面我们主要介绍了有回复和无回复的消息的使用方法和源码解析,为了更好的理解Ahandler这个类的作用,本篇便主要对AHandler类的所有方法进行全解。简单介绍一下Ahandler机制AHandler是Android native层实现的一个异步消息机制,在这个机制中所有的处理都是异步的,将消息封装到一个消息AMessage结构体中,然后放到消息队列中去,后台专门有一个线程ALooper会从这个队列中取出消息然后分发执行,执行函数就是AHandler实例的onMessageReceived。
2024-11-01 17:44:26
1147
原创 【android12】【AHandler】【3.AHandler原理篇AHandler类方法全解】
AHandler是Android native层实现的一个异步消息机制,在这个机制中所有的处理都是异步的,将消息封装到一个消息AMessage结构体中,然后放到消息队列中去,后台专门有一个线程ALooper会从这个队列中取出消息然后分发执行,执行函数就是AHandler实例的onMessageReceived。
2024-11-01 13:34:33
550
原创 【android12】【AHandler】【2.AHandler异步回复消息原理篇】
上一篇我们讲解了不需要回复消息的使用方法和源码分析,本篇便对有回复消息的Ahandler机制进行讲解。简单介绍一下Ahandler机制AHandler是Android native层实现的一个异步消息机制,在这个机制中所有的处理都是异步的,将消息封装到一个消息AMessage结构体中,然后放到消息队列中去,后台专门有一个线程ALooper会从这个队列中取出消息然后分发执行,执行函数就是AHandler实例的onMessageReceived。
2024-10-31 23:23:11
809
原创 【android12】【AHandler】【1.AHandler异步无回复消息原理篇】
AHandler是Android native层实现的一个异步消息机制,在这个机制中所有的处理都是异步的,将消息封装到一个消息AMessage结构体中,然后放到消息队列中去,后台专门有一个线程ALooper会从这个队列中取出消息然后分发执行,执行函数就是AHandler实例的onMessageReceived。在AHandler中的消息分为不需要回复的消息和需要回复的消息。
2024-10-30 23:17:21
1083
1
原创 【android10】【binder】【3.向servicemanager注册服务】
此篇我们便从源码的角度来看注册服务的过程,此篇以MediaPlayerService注册进入到servicemanager中为例子。此处举例为MediaPlayerService注册进入到servicemanager中。首先mediaservice会获取ProcessState实例对象,此ProcessState对象会打开binder驱动,驱动中会创建meidaservice服务对应的porc进程信息对象。
2024-09-23 20:16:07
1247
4
原创 【android10】【binder】【2.servicemanager启动——全源码分析】
第一步:首先init进程启动后会读取各个进程的rc启动文件,然后会去启动servermanager服务。第二步:在servermanager服务的main函数中,首先会打开/dev/binder驱动,并申请一块内存,通过mmap的进行内存映射,将servermanager服务的用户空间映射到驱动中,从而会减少数据的拷贝。第三步:becomeContextManager通知驱动成为binder的管理者。
2024-09-09 20:00:00
1179
原创 【binder】【android12】【2.servicemanager启动——全源码分析】
经过上一篇,我们已经知道servermanager的框架,那么本篇便从源码的角度分析servermangaer服务的启动流程。第一步:首先init进程启动后会读取各个进程的rc启动文件,然后会去启动servermanager服务。第二步:在servermanager服务的main函数中,首先会打开/dev/binder驱动,并申请一块内存,通过mmap的进行内存映射,将servermanager服务的用户空间映射到驱动中,从而会减少数据的拷贝。
2024-08-26 01:56:11
1205
原创 【android 9】【input】【11.发送普通motion事件1——touch设备的加载——MultiTouchInputMapper】
从之前的篇幅我们知道了,事件分为设备增删事件和原始输入事件,而原始输入事件主要有两种,一种是key按键事件的派发,一种是触摸事件的派发。Key事件的派发我们已经分析过了,本篇主要针对motion事件的派发。想要了解motion事件的派发,首先需要了解到touch设备的是如何加载的,本篇和前文的input设备流程相同,只是对于触摸屏的配置进行了更详细的描述。如MultiTouchInputMapper的创建过程。
2024-08-15 21:57:02
1005
原创 【设计模式】【创建型模式】【02工厂模式】
工厂模式主要是为创建对象提供过渡接口,以便将创建对象的具体过程屏蔽隔离起来,即定义一个用于创建对象的接口,让子类决定应该实例化哪个类,使类的实例化延迟到子类。也可以这样理解,工厂模式可以分为三类:1.简单工厂模式(Simple Factory)2.工厂方法模式(Factory Method)3.抽象工厂模式(Abstract Factory)简单工厂模式是通过一个工厂类将所有对象的创建封装起来,通过传入不同的参数,工厂负责创建不同的具体对象。
2024-07-16 21:02:19
495
1
原创 【android 9】【input】【10.发送按键事件4——View的分发流程】
通过前文我们知道了IMS会通过已经注册好的socket发送按键事件到应用程序端,那么本篇便来讲解一下应用程序端的流程。
2024-07-10 01:03:01
1308
原创 【设计模式】【行为型模式】【责任链模式】
责任链模式是一种行为型设计模式,它允许你构建一个对象链,让请求从链的一端进入,然后依次沿着链传递处理,直到链上的某个对象能够处理该请求。职责链上的每一个处理者都是一个对象,其内部会包含mNext指向下一个对象,这个对象可以对请求进行处理也可以将请求发送给下一个对象去处理。
2024-07-02 19:22:51
1074
1
原创 【android 9】【input】【9.发送按键事件3——Inputchannel的创建过程】
上一篇中,主要介绍了按键事件中inputdispatcher线程的分发流程,最后会通过sokcet对发送按键消息到应用端,那么这个socket对是什么时候创建的呢?是什么时候和IMS建立连接的呢?本文便主要解答一下这部分内容。
2024-06-28 21:12:21
1234
原创 【算法与数据结构】【数组篇】【题6-题10】
首先,是一个递增排序,那么我们可以知道头尾相加,判断最大值和最小值的和是否等于目标值,如果大于目标值,则说明我们值找大了,那就要找到次第二最大值,作为新区间的最大值,然后继续判断是否等于目标值。当为偶数的时候,如果x+y=i,i的值小于最大的行数,代表坐标x从i开始,y从0开始,如果i大于等于最大的行数,代表坐标x从m开始,y=i-m开始。当为奇数的时候,如果x+y=i,i的值小于最大的列数,代表坐标y从i开始,x从0开始, 如果i大于等于最大的列数,代表坐标y从n开始,x=i-n开始。
2024-06-11 19:36:10
1266
原创 【算法与数据结构】【数组篇】【题1-题5】
数组就是一个集合。数组会用一些名为索引的数字来标识每项数据在数组中的位置,且在大多数编程语言中,索引是从 0 算起的。我们可以根据数组中的索引,快速访问数组中的元素。数组中的元素在内存中是连续存储的,且每个元素占用相同大小的内存。
2024-06-11 10:12:43
1170
原创 【android 9】【input】【8.发送按键事件2——InputDispatcher线程】
【android 9】【input】【8.发送按键事件2——InputDispatcher线程】
2024-06-04 17:52:24
1548
原创 【android 9】【input】【7.发送按键事件1——InputReader线程】
【android 9】【input】【7.发送按键事件1——InputReader线程】
2024-06-03 20:45:00
1263
1
原创 【android 9】【input】【2.结构体含义】
由于后续篇幅如input启动分析,增删设备事件分析,发送key按键分析中存在大量的结构体,包含了各种信息,为了更好的了解和读懂,此篇,将对大量的结构体和其参数的含义作出解释。
2024-05-17 17:27:45
1515
原创 【多线程篇】【thread】【生产者和消费者模型】
生产者和消费者之间不直接进行交互,而是通过一个缓冲区进行交互,生产者生产数据,然后存入缓冲区,消费者负责从缓冲区取出数据并消费数据。
2024-05-15 20:30:00
1326
原创 【android 9】【selinux】【2.工具篇】
可跳转到下面链接查看下表所有内容文章浏览阅读2次。系列文章大全主要包含以下内容Input系统篇【android9】【input系统】【1工具篇】【android9】【input系统】【2.简介】【android9】【input系统】【3.启动】【android9】【selinux】【1.简介】
2024-05-07 13:37:44
2132
原创 【Linux】【INotify与Epoll机制】
INotify是一个Linux内核所提供的一种文件系统变化通知机制。它可以为应用程序监控文件系统的变化,如文件的创建、删除、读写等。当监听的文件发生相应的操作时,可以通过read函数从INotify中读取事件。INotify主要有两个基本对象。分别是inotify对象和watch对象。第一步:通过inotify_init()创建一个inotify对象。第二步:通过inotify_add_watch将一个或多个监听添加到inotify对象中。
2024-04-25 15:32:19
1505
3
原创 【通信篇】【Socket通信机制】
Socket通信机制是一种计算机网络通信协议,它是基于TCP/IP协议栈的应用层协议,提供了一组API(应用程序接口),允许不同的进程在不同计算机之间进行通信。socket通信一般涉及客户端和服务端两个socket。服务器端首先初始化Socket,然后与端口绑定,并对该端口进行监听。当客户端连接成功后,客户端会发送数据请求,服务器端接收并处理这些请求,然后将回应数据发送给客户端。客户端读取数据后,连接关闭。socket本身不是协议,是api接口,通过socket,我们可以使用Tcp/ip协议。
2024-04-19 00:06:48
3827
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人