Android进阶——Android跨进程通讯机制之Binder,kotlin协程实现原理

本文详细解析了Android跨进程通讯的核心机制Binder,从客户端调用流程到Stub类的实现原理,同时探讨了如何使用Kotlin协程优化异步处理。通过对Binder的深入理解和Kotlin协程的运用,提升Android应用的性能和用户体验。
摘要由CSDN通过智能技术生成

};

public void add(View view) {
try {
int res = iMyAidlI
nterface.add(1, 2);
Log.i(“Hensen”, “从服务端调用成功的结果:” + res);
} catch (RemoteException e) {
e.printStackTrace();
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
梳理客户端的调用流程:

调用Stub.asInterface获取BinderProxy对象
调用BinderProxy对象的add方法
三、分析原理

1、Stub

Stub类继承自Binder,意味着这个Stub其实自己是一个Binder本地对象,然后实现了IMyAidlInterface接口,IMyAidlInterface本身是一个IInterface,因此他携带某种客户端需要的能力(这里是方法add)。此类有一个内部类Proxy,也就是Binder代理对象

/*

  • This file is auto-generated. DO NOT MODIFY.
  • Original file: D:\workspace5\Boke\app\src\main\aidl\com\handsome\boke\IMyAidlInterface.aidl
    */
    package com.handsome.boke;
    // Declare any non-default types here with import statements

public interface IMyAidlInterface extends android.os.IInterface {
/**

  • Local-side IPC implementation stub class.
    */
    public static abstract class Stub extends android.os.Binder implements com.handsome.boke.IMyAidlInterface {
    private static final java.lang.String DESCRIPTOR = “com.handsome.boke.IMyAidlInterface”;

/**

  • Construct the stub at attach it to the interface.
    */
    public Stub() {
    this.attachInterface(this, DESCRIPTOR);
    }

/**

  • Cast an IBinder object into an com.handsome.boke.IMyAidlInterface interface,
  • generating a proxy if needed.
    */
    public static co
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值