自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(11)
  • 收藏
  • 关注

原创 C++层Binder——IPCThreadState

C++层Binder——IPCThreadState  Binder服务端可以自动相应客户端的请求,其底层必然是有对应的线程来支撑它的运行的,而在Binder的服务端里,确实是有一个线程池来支持Binder服务端的运行,我们使用top指令看线程状态,可以看到很多线程名带有Binder字样的就是这个线程池中开辟的Binder线程。  还是以cameraservice为例子。我们知道cameraservice是一个独立进程,而独立进程必然是有一个main函数作为进程的入口函数的。cameraservice的

2022-03-22 00:41:00 1393

原创 C++层Binder——Bn、Bp

C++层Binder——Bn、Bp  我们知道,Binder之间通信,需要一个服务端和一个客户端,而C++层的Binder,Bn端为服务端,Bp端为客户端。所谓Bn、Bp端,实际就是以Bn、Bp为前缀的C++类。  以cameraservice为例,cameraservice作为服务端,其继承于BnCameraService。// av/services/camera/libcameraservice/CameraService.hclass CameraService : public B

2022-03-20 01:40:28 5526 4

原创 C++层Binder——智能指针

C++层Binder——智能指针  要讲native层的Binder机制,那得首先搞明白native层智能指针的原理。  core/include/utils/RefBase.h  core/libutils/RefBase.cpp  core/libutils/include/utils/StrongPointer.h一、RefBase  一个对象想要使用智能指针,该对象则必须要满足一个前提条件,即该对象必须继承自RefBase。这很好理解,智能指针的原理便是有一个引用计数用于计算该对象被引用

2022-03-20 01:39:55 519

原创 java层Binder——BinderProxy类

java层Binder——BinderProxy类  BinderProxy类实际上是java层Binder机制中客户端Proxy的mRemote成员变量。在Proxy中,客户端调用服务端IPC业务接口时,首先便会通过proxy中的业务接口去调用mRemote.transact,mRemote自然就是Proxy的成员变量,是一个IBinder类,这个IBinder只是一个Binder功能接口,它实际上就是由BinderProxy向上转型得来的。一、实例化  在java层代码中很难找到这个类实例化的地方

2022-03-20 01:38:43 2236 4

原创 java层Binder——Binder类

java层Binder——Binder类  Binder类是服务端Stub的父类,其主要作用也是为服务端提供Binder通信的支持。在Stub类中的onTransact方法,适用于Binder通信的,在客户端调用服务端IPC接口时,最终会调用到Stub的onTransact方法,该方法再去调用业务接口。但是由谁来调用onTransact方法的呢,答案就在Binder类里。一、构造与初始化public Binder(@Nullable String descriptor) { mObject

2022-03-20 01:37:52 1305

原创 JAVA层Bidner——AIDL

JAVA层Bidner——AIDL一、使用  在定义好一个aidl文件并且编译过后,Android studio会自动生成一个aidl对应的java文件。比如定义一个IMyAidlInterface.aidl如下:interface IMyAidlInterface { void basicTypes(int anInt, long aLong, boolean aBoolean, float aFloat, double aDouble, String aString

2022-03-20 01:37:12 860

原创 Android Handler机制——NativeMessageQueue

Android Handler机制——NativeMessageQueue一、构造与初始化  NativeMessageQueue继承与MessageQueue和LooperCallback。class NativeMessageQueue : public MessageQueue, public LooperCallback {  实例化NativeMessageQueue对象的地方,是在android_os_MessageQueue_nativeInit,这是一个jni接口,对应java层接

2022-03-20 01:28:56 325

原创 Android Handler机制——ThreadLocal

Android Handler机制——ThreadLocal一、构造及初始化public ThreadLocal() {}  ThreadLocal本身并不存储主要信息,这从它的构造函数就可看出大概,其并没有强耦合其他类,它主要的作用是提供相关静态方法。但ThreadLocal有个内部类ThreadLocalMap,其中有个数组用于存储相关对象(本质是一个hashmap),而ThreadLocalMap则被存储与Thread对象中。类关系图如下:二、get/setpublic T get(

2022-03-20 01:26:44 393

原创 Android Handler机制——MessageQueue

Android Handler机制——MessageQueue一、构造Message mMessages;private final boolean mQuitAllowed;private long mPtr; // used by native codeMessageQueue(boolean quitAllowed) { mQuitAllowed = quitAllowed; mPtr = nativeInit();}  从MessageQueue的构造可以看出,其主要是两个参数

2022-03-20 01:23:59 869

原创 Android Handler机制——Looper

Android Handler机制——Looper一、构造及初始化final MessageQueue mQueue;final Thread mThread;static final ThreadLocal<Looper> sThreadLocal = new ThreadLocal<Looper>();private Looper(boolean quitAllowed) { mQueue = new MessageQueue(quitAllowed); mTh

2022-03-20 01:20:42 700

原创 Android Handler机制——Handler

Android Handler机制——Handler  Handler机制是一个典型的异步环境下的生产者-消费者模型,Handler为生产者,Looper为消费者,Message为产物,MessageQueue则是暂存产物的仓库(缓冲区)。一、构造public Handler();public Handler(@Nullable Callback callback);public Handler(@NonNull Looper looper);public Handler(@NonNull Lo

2022-03-20 01:18:18 283

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除