ICriticalNative Interface

Definição

Marca um método nativo qualificado para usar as transições de JNI (Interface Nativa) mais rápida Java s disponíveis.

[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
Atributos
Implementações

Comentários

Um método nativo crítico deve ser estático, pode ter apenas tipos de parâmetro primitivo e deve retornar um tipo primitivo ou void. A anotação altera a ABI de transição JNI, portanto, a implementação nativa deve omitir os parâmetros e jclass os JNIEnv parâmetros.

Enquanto um método nativo crítico é executado, a coleta de lixo não pode suspender seu thread e pode ser bloqueada. Não use essa anotação em métodos de execução longa ou métodos que executam E/S significativa ou adquiram bloqueios nativos que podem ser mantidos por um longo tempo. Essa anotação não tem efeito sobre métodos não nativos.

Essa otimização é uma API pública testada pelo CTS a partir do Android 14. Para obter compatibilidade máxima, evite chamar métodos nativos críticos no Android 13 e anteriores. A vinculação JNI dinâmica funciona apenas no Android 12 e posterior; os métodos usados no Android 8 até o Android 11 devem ser explicitamente registrados com JNI RegisterNatives. No Android 7 e anteriores, a anotação é ignorada, portanto, a incompatibilidade resultante da ABI pode causar falhas e marshalling de argumentos incorretos.

Java documentação para dalvik.annotation.optimization.CriticalNative.

Partes desta página são modificações baseadas no trabalho criado e compartilhado pelo Project Open Source do Open Source e usadas de acordo com os termos descritos na Creative Commons 2.5.

Propriedades

Nome Description
Handle

Obtém o valor JNI do objeto Android subjacente.

(Herdado de IJavaObject)
JniIdentityHashCode

Retorna o valor da java.lang.System.identityHashCode() instância encapsulada.

(Herdado de IJavaPeerable)
JniManagedPeerState

Estado do par gerenciado.

(Herdado de IJavaPeerable)
JniObjectReferenceControlBlock

Marca um método nativo qualificado para usar as transições de JNI (Interface Nativa) mais rápida Java s disponíveis.

(Herdado de IJavaPeerable)
JniPeerMembers

Acesso ao membro e suporte à invocação.

(Herdado de IJavaPeerable)
PeerReference

Retorna uma JniObjectReference das instâncias de objeto Java encapsuladas.

(Herdado de IJavaPeerable)

Métodos

Nome Description
AnnotationType()

Retorna a interface de anotação dessa anotação.

(Herdado de IAnnotation)
Disposed()

Chamado quando a instância foi descartada.

(Herdado de IJavaPeerable)
DisposeUnlessReferenced()

Se não houver referências pendentes a essa instância, então chamará Dispose(); caso contrário, não fará nada.

(Herdado de IJavaPeerable)
Equals(Object)

Retorna true se o objeto especificado representa uma anotação que é logicamente equivalente a esta.

(Herdado de IAnnotation)
Finalized()

Chamado quando a instância foi finalizada.

(Herdado de IJavaPeerable)
GetHashCode()

Retorna o código hash dessa anotação.

(Herdado de IAnnotation)
SetJniIdentityHashCode(Int32)

Defina o valor retornado por JniIdentityHashCode.

(Herdado de IJavaPeerable)
SetJniManagedPeerState(JniManagedPeerStates)

Marca um método nativo qualificado para usar as transições de JNI (Interface Nativa) mais rápida Java s disponíveis.

(Herdado de IJavaPeerable)
SetPeerReference(JniObjectReference)

Defina o valor retornado por PeerReference.

(Herdado de IJavaPeerable)
ToString()

Retorna uma representação de cadeia de caracteres dessa anotação.

(Herdado de IAnnotation)
UnregisterFromRuntime()

Cancele o registro dessa instância para que o runtime não a retorne de invocações futuras Java.Interop.JniRuntime+JniValueManager.PeekValue .

(Herdado de IJavaPeerable)

Métodos de Extensão

Nome Description
GetJniTypeName(IJavaPeerable)

Obtém o nome JNI do tipo da instância self.

JavaAs<TResult>(IJavaPeerable)

Tente coagir a digitar selfTResult, verificando se a coerção é válida no lado Java.

JavaCast<TResult>(IJavaObject)

Executa uma conversão de tipo marcada por runtime do Android.

JavaCast<TResult>(IJavaObject)

Marca um método nativo qualificado para usar as transições de JNI (Interface Nativa) mais rápida Java s disponíveis.

TryJavaCast<TResult>(IJavaPeerable, TResult)

Tente coagir a digitar selfTResult, verificando se a coerção é válida no lado Java.

Aplica-se a