Language

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 パラメーターと jclass パラメーターを省略する必要があります。

重要なネイティブ メソッドが実行されている間、ガベージ コレクションはスレッドを中断できず、ブロックされる可能性があります。 重要な I/O を実行する、または長時間保持できるネイティブ ロックを取得する、実行時間の長いメソッドまたはメソッドでは、この注釈を使用しないでください。 この注釈は、非ネイティブ メソッドには影響しません。

この最適化は、Android 14 以降の CTS でテストされたパブリック API です。 互換性を最大限に高める場合は、Android 13 以前で重要なネイティブ メソッドを呼び出さないようにしてください。 ダイナミックJNIリンクはAndroid 12以降でのみ動作します。Android 8 から Android 11 で使用されるメソッドは、JNI RegisterNativesに明示的に登録する必要があります。 Android 7 以前では注釈は無視されるため、結果として ABI の不一致により、引数マーシャリングが正しくなくなり、クラッシュする可能性があります。

Javaドキュメント。

このページの一部は、によって作成および共有され、に記載されている条件に従って使用される作業に基づく変更です。

プロパティ

名前 説明
Handle

基になる Android オブジェクトの JNI 値を取得します。

(継承元 IJavaObject)
JniIdentityHashCode

ラップされたインスタンスの java.lang.System.identityHashCode() の値を返します。

(継承元 IJavaPeerable)
JniManagedPeerState

マネージド ピアの状態。

(継承元 IJavaPeerable)
JniObjectReferenceControlBlock

使用可能なネイティブ メソッドをマークして、使用可能な最速のJavaネイティブ インターフェイス (JNI) 遷移を使用します。

(継承元 IJavaPeerable)
JniPeerMembers

メンバー アクセスと呼び出しのサポート。

(継承元 IJavaPeerable)
PeerReference

ラップされたJava オブジェクト インスタンスのJniObjectReferenceを返します。

(継承元 IJavaPeerable)

メソッド

名前 説明
AnnotationType()

この注釈の注釈インターフェイスを返します。

(継承元 IAnnotation)
Disposed()

インスタンスが破棄されたときに呼び出されます。

(継承元 IJavaPeerable)
DisposeUnlessReferenced()

このインスタンスへの未処理の参照がない場合は、 Dispose()を呼び出します。それ以外の場合は何も実行しません。

(継承元 IJavaPeerable)
Equals(Object)

指定したオブジェクトがこのオブジェクトと論理的に等価な注釈を表す場合は true を返します。

(継承元 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)

拡張メソッド

名前 説明
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側で有効であることを確認します。

適用対象