Binder 类

定义

远程对象的基类,这是由 IBinder定义的轻型远程过程调用机制的核心部分。

[Android.Runtime.Register("android/os/Binder", DoNotGenerateAcw=true)]
public class Binder : Java.Lang.Object, Android.OS.IBinder, IDisposable, Java.Interop.IJavaPeerable
[<Android.Runtime.Register("android/os/Binder", DoNotGenerateAcw=true)>]
type Binder = class
    inherit Object
    interface IBinder
    interface IJavaObject
    interface IDisposable
    interface IJavaPeerable
继承
Binder
属性
实现

注解

远程对象的基类,这是由 IBinder定义的轻型远程过程调用机制的核心部分。 此类是 IBinder 的实现,它提供此类对象的标准本地实现。

大多数开发人员不会直接实现此类,而是使用 aidl 工具描述所需的接口,并生成相应的 Binder 子类。 但是,可以直接派生自 Binder 来实现自己的自定义 RPC 协议,或者直接实例化原始 Binder 对象,以用作可在进程之间共享的令牌。

此类只是一个基本的 IPC 基元;它不会影响应用程序的生命周期,并且只要创建应用程序的进程继续运行,它才有效。 若要正确使用此功能,必须在顶级应用程序组件(或android.app.Serviceandroid.app.Activityandroid.content.ContentProvider)的上下文中执行此操作,以便系统知道进程应保持运行状态。

必须记住进程可能消失的情况,因此,需要稍后重新创建一个新的 Binder,并在进程再次启动时重新附加它。 例如,如果在某个范围内 android.app.Activity使用此功能,则活动在未启动活动时可能会终止;如果活动稍后重新创建,则需要创建一个新的 Binder 并将其重新交给正确的位置;你需要注意,你的进程可能出于另一个原因(例如接收广播)而启动,而不需要重新创建活动,从而运行用于创建新的 Binder 的代码。

适用于 . 的 android.os.BinderJava 文档

本页的某些部分是根据 Android 开放源代码项目创建和共享的工作进行的修改,并根据 Creative Commons 2.5 属性许可证中所述的术语使用。

构造函数

Binder()

默认构造函数只是初始化对象。

Binder(IntPtr, JniHandleOwnership)

创建 JNI 对象的托管表示形式时使用的构造函数;由运行时调用。

Binder(String)

用于创建原始 Binder 对象(标记)以及描述符的构造函数。

属性

CallingPid

返回正在处理当前事务的进程 ID。

CallingUid

返回分配给正在处理的当前事务的进程的 Linux UID。

CallingUidOrThrow

返回分配给当前正在处理的事务的进程分配的 Linux UID。

CallingUserHandle

返回分配给正在处理的当前事务的进程的用户Handle。

CallingWorkSourceUid

返回调用方设置的工作源。

Class

返回此 Object的运行时类。

(继承自 Object)
Handle

基础 Android 实例的句柄。

(继承自 Object)
InterfaceDescriptor

默认实现返回空接口名称。

IsBinderAlive

要添加

        Note that if you're calling on a local binder, this always returns true
        because your process is alive if you're calling it.
JniIdentityHashCode

远程对象的基类,这是由 IBinder定义的轻型远程过程调用机制的核心部分。

(继承自 Object)
JniPeerMembers

远程对象的基类,这是由 IBinder定义的轻型远程过程调用机制的核心部分。

PeerReference

远程对象的基类,这是由 IBinder定义的轻型远程过程调用机制的核心部分。

(继承自 Object)
ThresholdClass

此 API 支持 Mono for Android 基础结构,不打算直接从代码使用。

ThresholdType

此 API 支持 Mono for Android 基础结构,不打算直接从代码使用。

方法

AttachInterface(IInterface, String)

将特定接口与 Binder 关联到的便利方法。

ClearCallingIdentity()

重置当前线程上传入 IPC 的标识。

ClearCallingWorkSource()

清除此线程上的工作源。

Clone()

创建并返回此对象的副本。

(继承自 Object)
Dispose()

远程对象的基类,这是由 IBinder定义的轻型远程过程调用机制的核心部分。

(继承自 Object)
Dispose(Boolean)

远程对象的基类,这是由 IBinder定义的轻型远程过程调用机制的核心部分。

(继承自 Object)
Dump(FileDescriptor, PrintWriter, String[])

将对象的状态打印到给定流中。

Dump(FileDescriptor, String[])

实现调用更方便的版本 #dump(FileDescriptor, PrintWriter, String[])

DumpAsync(FileDescriptor, String[])

例如 #dump(FileDescriptor, String[]),但确保目标以异步方式执行。

Equals(Object)

指示其他对象是否“等于”此对象。

(继承自 Object)
FlushPendingCommands()

将当前线程中挂起的任何 Binder 命令刷新到内核驱动程序。

GetHashCode()

返回对象的哈希代码值。

(继承自 Object)
JavaFinalize()

当垃圾回收确定不再引用该对象时,由对象上的垃圾回收器调用。

(继承自 Object)
JoinThreadPool()

将调用线程添加到 IPC 线程池。

LinkToDeath(IBinderDeathRecipient, Int32)

本地实现是一种无操作。

Notify()

唤醒正在等待此对象的监视器的单个线程。

(继承自 Object)
NotifyAll()

唤醒正在等待此对象的监视器的所有线程。

(继承自 Object)
OnTransact(Int32, Parcel, Parcel, Int32)

默认实现是返回 false 的存根。

PingBinder()

默认实现始终返回 true -- 如果在此处获取,则对象处于活动状态。

QueryLocalInterface(String)

如果使用提供的信息与 #attachInterface attachInterface() 请求的描述符匹配,则返回关联的 IInterface 信息。

RestoreCallingIdentity(Int64)

将当前线程上传入 IPC 的标识还原回以前返回的 #clearCallingIdentity标识。

RestoreCallingWorkSource(Int64)

使用或返回的#setCallingWorkSourceUid(int)#clearCallingWorkSource()令牌还原此线程上的工作源。

SetCallingWorkSourceUid(Int32)

设置此线程的工作源。

SetHandle(IntPtr, JniHandleOwnership)

设置 Handle 属性。

(继承自 Object)
ToArray<T>()

远程对象的基类,这是由 IBinder定义的轻型远程过程调用机制的核心部分。

(继承自 Object)
ToString()

返回对象的字符串表示形式。

(继承自 Object)
Transact(Int32, Parcel, Parcel, TransactionFlags)

默认实现会回退包裹和调用 onTransact。

UnlinkToDeath(IBinderDeathRecipient, Int32)

本地实现是一种无操作。

UnregisterFromRuntime()

远程对象的基类,这是由 IBinder定义的轻型远程过程调用机制的核心部分。

(继承自 Object)
Wait()

使当前线程等待,直到唤醒它,通常是通过 em 通知/em> 或 <em>interrupted</em>。<><

(继承自 Object)
Wait(Int64)

使当前线程等待直到唤醒,通常是通过 <em>通知</em> 或 <em interrupted</em>>,或直到经过一定数量的实时。

(继承自 Object)
Wait(Int64, Int32)

使当前线程等待直到唤醒,通常是通过 <em>通知</em> 或 <em interrupted</em>>,或直到经过一定数量的实时。

(继承自 Object)

显式接口实现

IJavaPeerable.Disposed()

远程对象的基类,这是由 IBinder定义的轻型远程过程调用机制的核心部分。

(继承自 Object)
IJavaPeerable.DisposeUnlessReferenced()

远程对象的基类,这是由 IBinder定义的轻型远程过程调用机制的核心部分。

(继承自 Object)
IJavaPeerable.Finalized()

远程对象的基类,这是由 IBinder定义的轻型远程过程调用机制的核心部分。

(继承自 Object)
IJavaPeerable.JniManagedPeerState

远程对象的基类,这是由 IBinder定义的轻型远程过程调用机制的核心部分。

(继承自 Object)
IJavaPeerable.SetJniIdentityHashCode(Int32)

远程对象的基类,这是由 IBinder定义的轻型远程过程调用机制的核心部分。

(继承自 Object)
IJavaPeerable.SetJniManagedPeerState(JniManagedPeerStates)

远程对象的基类,这是由 IBinder定义的轻型远程过程调用机制的核心部分。

(继承自 Object)
IJavaPeerable.SetPeerReference(JniObjectReference)

远程对象的基类,这是由 IBinder定义的轻型远程过程调用机制的核心部分。

(继承自 Object)

扩展方法

JavaCast<TResult>(IJavaObject)

执行 Android 运行时检查的类型转换。

JavaCast<TResult>(IJavaObject)

远程对象的基类,这是由 IBinder定义的轻型远程过程调用机制的核心部分。

GetJniTypeName(IJavaPeerable)

远程对象的基类,这是由 IBinder定义的轻型远程过程调用机制的核心部分。

适用于