語言

ICriticalNative 介面

定義

標記為符合資格的原生方法,可使用最快可用的 Java 原生介面(JNI)轉換。

[Android.Runtime.Register("dalvik/annotation/optimization/CriticalNative", "", "Dalvik.Annotation.Optimization.ICriticalNativeInvoker", ApiSince=34)]
public interface ICriticalNative : IDisposable, Java.Interop.IJavaPeerable, Java.Lang.Annotation.IAnnotation
[<Android.Runtime.Register("dalvik/annotation/optimization/CriticalNative", "", "Dalvik.Annotation.Optimization.ICriticalNativeInvoker", ApiSince=34)>]
type ICriticalNative = interface
    interface IAnnotation
    interface IJavaObject
    interface IDisposable
    interface IJavaPeerable
屬性
實作

備註

臨界原生方法必須是靜態的,只能有原始參數型別,且必須回傳原始型別或 void。 註解會改變 JNI 轉換的 ABI,因此原生實作必須省 JNIEnv 略 and jclass 參數。

當關鍵的原生方法執行時,垃圾回收無法暫停其執行緒,且可能會被阻擋。 請勿將此註解用於長期執行的方法,或是進行大量 I/O 或取得可長期保留的原生鎖的方法。 此註解對非原生方法不影響。

這項優化是從 Android 14 開始經過 CTS 測試的公開 API。 為了達到最佳相容性,請避免在 Android 13 及更早版本呼叫關鍵的原生方法。 動態 JNI 連結僅適用於 Android 12 及更新版本;Android 8 至 Android 11 所用的方法必須明確註冊於 JNI RegisterNatives。 在 Android 7 及更早版本中,註解會被忽略,因此產生的 ABI 不匹配可能導致錯誤的參數編組並導致當機。

dalvik.annotation.optimization.CriticalNativeJava 檔。

本頁部分內容為基於 Open Source Project 所創建與分享的作品,並依授權條款所描述的使用進行修改。

屬性

名稱 Description
Handle

取得底層 Android 物件的 JNI 值。

(繼承來源 IJavaObject)
JniIdentityHashCode

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

(繼承來源 IJavaPeerable)
JniManagedPeerState

管理貴族的狀況。

(繼承來源 IJavaPeerable)
JniObjectReferenceControlBlock

標記為符合資格的原生方法,可使用最快可用的 Java 原生介面(JNI)轉換。

(繼承來源 IJavaPeerable)
JniPeerMembers

成員存取與召喚支援。

(繼承來源 IJavaPeerable)
PeerReference

回傳JniObjectReference包裹後的 Java 物件實例。

(繼承來源 IJavaPeerable)

方法

名稱 Description
AnnotationType()

回傳該註解的註解介面。

(繼承來源 IAnnotation)
Disposed()

當實例被處理後才被召喚。

(繼承來源 IJavaPeerable)
DisposeUnlessReferenced()

如果沒有未解決的參考資料,則 Dispose()呼叫;否則,則不做任何事。

(繼承來源 IJavaPeerable)
Equals(Object)

若指定物件代表與此標註邏輯等價,則返回真。

(繼承來源 IAnnotation)
Finalized()

當實例完成後才會被通知。

(繼承來源 IJavaPeerable)
GetHashCode()

回傳此註解的雜湊碼。

(繼承來源 IAnnotation)
SetJniIdentityHashCode(Int32)

將回傳的值設為 JniIdentityHashCode

(繼承來源 IJavaPeerable)
SetJniManagedPeerState(JniManagedPeerStates)

標記為符合資格的原生方法,可使用最快可用的 Java 原生介面(JNI)轉換。

(繼承來源 IJavaPeerable)
SetPeerReference(JniObjectReference)

將回傳的值設為 PeerReference

(繼承來源 IJavaPeerable)
ToString()

回傳此註解的字串表示。

(繼承來源 IAnnotation)
UnregisterFromRuntime()

取消註冊此實例,讓執行時不會在未來 Java.Interop.JniRuntime+JniValueManager.PeekValue 的呼叫中回傳該實例。

(繼承來源 IJavaPeerable)

擴充方法

名稱 Description
GetJniTypeName(IJavaPeerable)

取得實例 self類型的 JNI 名稱。

JavaAs<TResult>(IJavaPeerable)

試著強制self輸入 TResult,檢查 強制在 Java 端是否有效。

JavaCast<TResult>(IJavaObject)

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

JavaCast<TResult>(IJavaObject)

標記為符合資格的原生方法,可使用最快可用的 Java 原生介面(JNI)轉換。

TryJavaCast<TResult>(IJavaPeerable, TResult)

試著強制self輸入 TResult,檢查 強制在 Java 端是否有效。

適用於