共用方式為


IBinder 介面

定義

遠端物件的基底介面,這是輕量型遠端過程調用機制的核心部分,專為執行進程內和跨進程呼叫時高效能而設計。

[Android.Runtime.Register("android/os/IBinder", "", "Android.OS.IBinderInvoker")]
public interface IBinder : Android.Runtime.IJavaObject, IDisposable, Java.Interop.IJavaPeerable
[<Android.Runtime.Register("android/os/IBinder", "", "Android.OS.IBinderInvoker")>]
type IBinder = interface
    interface IJavaObject
    interface IDisposable
    interface IJavaPeerable
衍生
屬性
實作

備註

遠端物件的基底介面,這是輕量型遠端過程調用機制的核心部分,專為執行進程內和跨進程呼叫時高效能而設計。 這個介面描述與可遠端物件互動的抽象通訊協定。 請勿直接實作這個介面,而是從 擴充。Binder

金鑰 IBinder API 會 #transact transact() 比對 Binder#onTransact Binder.onTransact()。 這些方法可讓您傳送對IBinder對象的呼叫,並分別接收傳入Binder物件的呼叫。 此交易 API 是同步的,因此在目標傳回之前,不會傳回 Binder#onTransact Binder.onTransact()對的呼叫#transact transact();呼叫存在於本機進程中的物件時,這是預期的行為,而基礎進程間通訊 (IPC) 機制可確保在跨進程時套用這些相同的語意。

透過 transact() 傳送的數據是 , Parcel這是數據的泛型緩衝區,也會維護其內容的一些元數據。 元數據可用來管理緩衝區中的 IBinder 物件參考,以便在緩衝區跨進程移動時維護這些參考。 此機制可確保當 IBinder 寫入至包裹並傳送至另一個進程時,如果該其他進程會將該相同 IBinder 的參考傳回至原始程式,則原始進程會接收相同的 IBinder 物件。 這些語意可讓 IBinder/Binder 物件做為唯一的身分識別(做為令牌或其他用途),以跨進程管理。

系統會在它執行的每個進程中維護交易線程集區。 這些線程可用來分派來自其他進程的所有 IPC。 例如,當 IPC 從進程 A 到處理 B 時,交易傳送至進程 B 時,交易傳送至進程 B 的 A 區塊中的呼叫線程。B 中的下一個可用集區線程會收到傳入交易、在目標物件上呼叫 Binder.onTransact(),並回復結果 Parcel。 收到其結果后,進程 A 中的線程會傳回以允許其執行繼續。 實際上,其他進程似乎會作為您未在自己的進程中建立執行的其他線程使用。

Binder 系統也支援跨進程遞歸。 例如,如果進程 A 在 A 中實作的 IBinder 上執行交易來處理 B,並在處理該交易時處理 B,則目前等候原始交易完成的 A 線程會負責在 B 所呼叫的物件上呼叫 Binder.onTransact()。這可確保呼叫遠端系結器物件時的遞歸語意與呼叫本機物件時相同。

使用遠端物件時,您通常會想要找出它們不再有效的時間。 有三種方式可以判斷: <ul><li> 方法 #transact transact() 會擲回 RemoteException 例外狀況,如果您嘗試在進程已不存在的 IBinder 上呼叫它。 <#pingBinder() li> 可以呼叫 方法,如果遠端進程已不存在,則會傳回 false。 <li> 方法 #linkToDeath linkToDeath() 可用來向 IBinder 註冊 DeathRecipient ,當其包含的進程消失時,將會呼叫這個方法。 </ul>

android.os.IBinderJava 檔。

此頁面的部分是根據 Android 開放原始碼專案所建立和共用的工作進行修改,並根據 Creative Commons 2.5 屬性授權中所述的詞彙使用。

欄位

DumpTransaction

IBinder 通訊協定交易碼:傾印內部狀態。

FirstCallTransaction

使用者命令可用的第一個交易程序代碼。

InterfaceTransaction

IBinder 通訊協定交易程式代碼:詢問交易的收件者端是否有其標準介面描述元。

LastCallTransaction

使用者命令可用的最後一個交易碼。

LikeTransaction

IBinder 通訊協定交易程式碼:以異步方式告訴應用程式呼叫端喜歡它。

PingTransaction

IBinder 通訊協定交易碼:pingBinder()。

TweetTransaction

IBinder 通訊協定交易程序代碼:將推文傳送至目標物件。

屬性

Handle

取得基礎 Android 物件的 JNI 值。

(繼承來源 IJavaObject)
InterfaceDescriptor

取得這個系結器所支援的介面正式名稱。

IsBinderAlive

檢查系結器是否仍在運作中。

JniIdentityHashCode

傳回包裝實例的 值 java.lang.System.identityHashCode()

(繼承來源 IJavaPeerable)
JniManagedPeerState

受控對等的狀態。

(繼承來源 IJavaPeerable)
JniPeerMembers

成員存取和調用支援。

(繼承來源 IJavaPeerable)
PeerReference

JniObjectReference 回已包裝 Java 物件實例的 。

(繼承來源 IJavaPeerable)
SuggestedMaxIpcSizeBytes

應置於 IPC 大小的限制,以位元組為單位,以安全地將其保留在交易緩衝區限制之下。

方法

Disposed()

處置實例時呼叫。

(繼承來源 IJavaPeerable)
DisposeUnlessReferenced()

如果這個實例沒有未完成的參考,則呼叫 Dispose(),否則不會執行任何動作。

(繼承來源 IJavaPeerable)
Dump(FileDescriptor, String[])

將物件的狀態列印到指定的數據流中。

DumpAsync(FileDescriptor, String[])

和 一樣 #dump(FileDescriptor, String[]) ,但一律以異步方式執行。

Finalized()

實例完成時呼叫。

(繼承來源 IJavaPeerable)
LinkToDeath(IBinderDeathRecipient, Int32)

如果此系結器消失,請註冊收件者以取得通知。

PingBinder()

檢查物件是否存在。

QueryLocalInterface(String)

嘗試擷取這個 Binder 物件的介面本機實作。

SetJniIdentityHashCode(Int32)

設定所 JniIdentityHashCode傳回的值。

(繼承來源 IJavaPeerable)
SetJniManagedPeerState(JniManagedPeerStates)

遠端物件的基底介面,這是輕量型遠端過程調用機制的核心部分,專為執行進程內和跨進程呼叫時高效能而設計。

(繼承來源 IJavaPeerable)
SetPeerReference(JniObjectReference)

設定所 PeerReference傳回的值。

(繼承來源 IJavaPeerable)
Transact(Int32, Parcel, Parcel, TransactionFlags)

使用物件執行泛型作業。

UnlinkToDeath(IBinderDeathRecipient, Int32)

拿掉先前註冊的死亡通知。

UnregisterFromRuntime()

取消註冊此實例,讓運行時間不會從未來的 Java.Interop.JniRuntime+JniValueManager.PeekValue 調用傳回它。

(繼承來源 IJavaPeerable)

擴充方法

JavaCast<TResult>(IJavaObject)

執行 Android 執行時間檢查的類型轉換。

JavaCast<TResult>(IJavaObject)

遠端物件的基底介面,這是輕量型遠端過程調用機制的核心部分,專為執行進程內和跨進程呼叫時高效能而設計。

GetJniTypeName(IJavaPeerable)

遠端物件的基底介面,這是輕量型遠端過程調用機制的核心部分,專為執行進程內和跨進程呼叫時高效能而設計。

適用於