【android12】【AHandler】【4.AHandler原理篇ALooper类方法全解】 前面我们主要介绍了有回复和无回复的消息的使用方法和源码解析,为了更好的理解Ahandler这个类的作用,本篇便主要对AHandler类的所有方法进行全解。简单介绍一下Ahandler机制AHandler是Android native层实现的一个异步消息机制,在这个机制中所有的处理都是异步的,将消息封装到一个消息AMessage结构体中,然后放到消息队列中去,后台专门有一个线程ALooper会从这个队列中取出消息然后分发执行,执行函数就是AHandler实例的onMessageReceived。
【android12】【AHandler】【3.AHandler原理篇AHandler类方法全解】 AHandler是Android native层实现的一个异步消息机制,在这个机制中所有的处理都是异步的,将消息封装到一个消息AMessage结构体中,然后放到消息队列中去,后台专门有一个线程ALooper会从这个队列中取出消息然后分发执行,执行函数就是AHandler实例的onMessageReceived。
【android12】【AHandler】【2.AHandler异步回复消息原理篇】 上一篇我们讲解了不需要回复消息的使用方法和源码分析,本篇便对有回复消息的Ahandler机制进行讲解。简单介绍一下Ahandler机制AHandler是Android native层实现的一个异步消息机制,在这个机制中所有的处理都是异步的,将消息封装到一个消息AMessage结构体中,然后放到消息队列中去,后台专门有一个线程ALooper会从这个队列中取出消息然后分发执行,执行函数就是AHandler实例的onMessageReceived。
【android12】【AHandler】【1.AHandler异步无回复消息原理篇】 AHandler是Android native层实现的一个异步消息机制,在这个机制中所有的处理都是异步的,将消息封装到一个消息AMessage结构体中,然后放到消息队列中去,后台专门有一个线程ALooper会从这个队列中取出消息然后分发执行,执行函数就是AHandler实例的onMessageReceived。在AHandler中的消息分为不需要回复的消息和需要回复的消息。
【android10】【binder】【3.向servicemanager注册服务】 此篇我们便从源码的角度来看注册服务的过程,此篇以MediaPlayerService注册进入到servicemanager中为例子。此处举例为MediaPlayerService注册进入到servicemanager中。首先mediaservice会获取ProcessState实例对象,此ProcessState对象会打开binder驱动,驱动中会创建meidaservice服务对应的porc进程信息对象。
【android10】【binder】【2.servicemanager启动——全源码分析】 第一步:首先init进程启动后会读取各个进程的rc启动文件,然后会去启动servermanager服务。第二步:在servermanager服务的main函数中,首先会打开/dev/binder驱动,并申请一块内存,通过mmap的进行内存映射,将servermanager服务的用户空间映射到驱动中,从而会减少数据的拷贝。第三步:becomeContextManager通知驱动成为binder的管理者。
【binder】【android12】【2.servicemanager启动——全源码分析】 经过上一篇,我们已经知道servermanager的框架,那么本篇便从源码的角度分析servermangaer服务的启动流程。第一步:首先init进程启动后会读取各个进程的rc启动文件,然后会去启动servermanager服务。第二步:在servermanager服务的main函数中,首先会打开/dev/binder驱动,并申请一块内存,通过mmap的进行内存映射,将servermanager服务的用户空间映射到驱动中,从而会减少数据的拷贝。
【android 9】【input】【11.发送普通motion事件1——touch设备的加载——MultiTouchInputMapper】 从之前的篇幅我们知道了,事件分为设备增删事件和原始输入事件,而原始输入事件主要有两种,一种是key按键事件的派发,一种是触摸事件的派发。Key事件的派发我们已经分析过了,本篇主要针对motion事件的派发。想要了解motion事件的派发,首先需要了解到touch设备的是如何加载的,本篇和前文的input设备流程相同,只是对于触摸屏的配置进行了更详细的描述。如MultiTouchInputMapper的创建过程。
【设计模式】【创建型模式】【02工厂模式】 工厂模式主要是为创建对象提供过渡接口,以便将创建对象的具体过程屏蔽隔离起来,即定义一个用于创建对象的接口,让子类决定应该实例化哪个类,使类的实例化延迟到子类。也可以这样理解,工厂模式可以分为三类:1.简单工厂模式(Simple Factory)2.工厂方法模式(Factory Method)3.抽象工厂模式(Abstract Factory)简单工厂模式是通过一个工厂类将所有对象的创建封装起来,通过传入不同的参数,工厂负责创建不同的具体对象。
【android 9】【input】【10.发送按键事件4——View的分发流程】 通过前文我们知道了IMS会通过已经注册好的socket发送按键事件到应用程序端,那么本篇便来讲解一下应用程序端的流程。
【设计模式】【行为型模式】【责任链模式】 责任链模式是一种行为型设计模式,它允许你构建一个对象链,让请求从链的一端进入,然后依次沿着链传递处理,直到链上的某个对象能够处理该请求。职责链上的每一个处理者都是一个对象,其内部会包含mNext指向下一个对象,这个对象可以对请求进行处理也可以将请求发送给下一个对象去处理。
【android 9】【input】【9.发送按键事件3——Inputchannel的创建过程】 上一篇中,主要介绍了按键事件中inputdispatcher线程的分发流程,最后会通过sokcet对发送按键消息到应用端,那么这个socket对是什么时候创建的呢?是什么时候和IMS建立连接的呢?本文便主要解答一下这部分内容。
【算法与数据结构】【数组篇】【题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开始。
【算法与数据结构】【数组篇】【题1-题5】 数组就是一个集合。数组会用一些名为索引的数字来标识每项数据在数组中的位置,且在大多数编程语言中,索引是从 0 算起的。我们可以根据数组中的索引,快速访问数组中的元素。数组中的元素在内存中是连续存储的,且每个元素占用相同大小的内存。