StrictMode Clase
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
StrictMode es una herramienta de desarrollo que detecta las cosas que podría estar haciendo por accidente y las lleva a su atención para que pueda corregirlas.
[Android.Runtime.Register("android/os/StrictMode", DoNotGenerateAcw=true)]
public sealed class StrictMode : Java.Lang.Object
[<Android.Runtime.Register("android/os/StrictMode", DoNotGenerateAcw=true)>]
type StrictMode = class
inherit Object
- Herencia
- Atributos
Comentarios
StrictMode es una herramienta de desarrollo que detecta las cosas que podría estar haciendo por accidente y las lleva a su atención para que pueda corregirlas.
StrictMode se usa normalmente para detectar el acceso accidental de disco o de red en el subproceso principal de la aplicación, donde se reciben operaciones de interfaz de usuario y se realizan animaciones. Mantener las operaciones de disco y red fuera del subproceso principal hace que las aplicaciones sean mucho más fluidas y con mayor capacidad de respuesta. Al mantener la capacidad de respuesta del subproceso principal de la aplicación, también impide que se muestren diálogos ANR a los usuarios.
Tenga en cuenta que, aunque el disco de un dispositivo Android suele estar en memoria flash, muchos dispositivos ejecutan un sistema de archivos encima de esa memoria con simultaneidad muy limitada. A menudo, es el caso de que casi todos los accesos de disco sean rápidos, pero puede que en casos individuales sea considerablemente más lento cuando se está produciendo cierta E/S en segundo plano desde otros procesos. Si es posible, es mejor suponer que estas cosas no son rápidas.
Código de ejemplo para habilitar desde el principio en android.app.Applicationel método de , android.app.Activityu otro componente de android.app.Application#onCreate aplicación:
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
StrictMode.setThreadPolicy(
StrictMode.ThreadPolicy.Builder()
.detectAll()
.build()
)
StrictMode.setVmPolicy(
StrictMode.VmPolicy.Builder()
.detectAll()
.build()
)
}
Puede decidir qué debe ocurrir cuando se detecta una infracción. Por ejemplo, el uso ThreadPolicy.Builder#penaltyLog de puede ver la salida de adb logcat mientras usa la aplicación para ver las infracciones a medida que se producen.
Si encuentra infracciones que se sienten problemáticas, hay una variedad de herramientas para ayudar a resolverlos: subprocesos, android.os.Handler, android.os.AsyncTask, android.app.IntentService, etc. Pero no se sienta obligado a corregir todo lo que StrictMode encuentra. En concreto, muchos casos de acceso al disco suelen ser necesarios durante el ciclo de vida de la actividad normal. Usa StrictMode para encontrar cosas que hiciste por accidente. Sin embargo, las solicitudes de red en el subproceso de interfaz de usuario son casi siempre un problema.
StrictMode no es un mecanismo de seguridad y no se garantiza que encuentre todos los accesos de disco o red. Aunque propaga su estado a través de los límites del proceso al realizar android.os.Binder llamadas, sigue siendo en última instancia un mecanismo de mejor esfuerzo. En particular, el acceso a disco o red desde llamadas JNI no desencadenará necesariamente.
Documentación de Java para android.os.StrictMode.
Las partes de esta página son modificaciones basadas en el trabajo creado y compartido por el proyecto de código abierto de Android y se usan según los términos descritos en la licencia de atribución de Creative Commons 2.5.
Propiedades
| Nombre | Description |
|---|---|
| Class |
Devuelve la clase en tiempo de ejecución de este |
| Handle |
Identificador de la instancia de Android subyacente. (Heredado de Object) |
| JniIdentityHashCode |
Obtiene el código hash de identidad asignado a este Java del mismo nivel por el tiempo de ejecución de interoperabilidad. (Heredado de Object) |
| JniPeerMembers |
Proporciona metadatos de miembro del mismo nivel de JNI para este tipo. |
| PeerReference |
Obtiene la referencia de objeto JNI para este Java del mismo nivel. (Heredado de Object) |
| ThresholdClass |
Esta API admite la infraestructura mono para Android y no está pensada para usarse directamente desde el código. (Heredado de Object) |
| ThresholdType |
Esta API admite la infraestructura mono para Android y no está pensada para usarse directamente desde el código. (Heredado de Object) |
Métodos
| Nombre | Description |
|---|---|
| AllowThreadDiskReads() |
Un contenedor de conveniencia que toma el actual |
| AllowThreadDiskWrites() |
Un contenedor cómodo que toma el actual |
| Clone() |
Crea y devuelve una copia de este objeto. (Heredado de Object) |
| Dispose() |
Libera los recursos mantenidos por este Java del mismo nivel. (Heredado de Object) |
| Dispose(Boolean) |
Libera los recursos mantenidos por este Java del mismo nivel. (Heredado de Object) |
| EnableDefaults() |
Habilita los valores predeterminados de StrictMode recomendados, con infracciones que se acaban de registrar. |
| Equals(Object) |
Indica si algún otro objeto es "igual a" este. (Heredado de Object) |
| GetHashCode() |
Devuelve un valor de código hash del objeto. (Heredado de Object) |
| GetThreadPolicy() |
Devuelve la directiva del subproceso actual. |
| GetVmPolicy() |
Obtiene la directiva de máquina virtual actual. |
| JavaFinalize() |
Lo llama el recolector de elementos no utilizados en un objeto cuando la recolección de elementos no utilizados determina que no hay más referencias al objeto . (Heredado de Object) |
| NoteSlowCall(String) |
Para que el código tenga en cuenta que es lento. |
| Notify() |
Activa un único subproceso que está esperando en el monitor de este objeto. (Heredado de Object) |
| NotifyAll() |
Activa todos los subprocesos que están esperando en el monitor de este objeto. (Heredado de Object) |
| SetHandle(IntPtr, JniHandleOwnership) |
Establece la propiedad Handle. (Heredado de Object) |
| SetThreadPolicy(StrictMode+ThreadPolicy) |
Establece la directiva para qué acciones se deben detectar en el subproceso actual, así como la penalización si se producen estas acciones. |
| SetVmPolicy(StrictMode+VmPolicy) |
Establece la directiva para qué acciones se deben detectar en el proceso de máquina virtual (en cualquier subproceso), así como la penalización si se producen estas acciones. |
| ToArray<T>() |
Crea una matriz administrada a partir de este contenedor de matriz Java. (Heredado de Object) |
| ToString() |
Devuelve una representación de cadena del objeto. (Heredado de Object) |
| UnregisterFromRuntime() |
Anula el registro de este Java del mismo nivel del tiempo de ejecución de interoperabilidad. (Heredado de Object) |
| Wait() |
Hace que el subproceso actual espere hasta que se despierta, normalmente por ser em notificado/em< o >em<interrumpido>/em<.><> (Heredado de Object) |
| Wait(Int64, Int32) |
Hace que el subproceso actual espere hasta que se despierte, normalmente por ser <em>notificado</em> o <em>interrumpido</em>, o hasta que haya transcurrido una cierta cantidad de tiempo real. (Heredado de Object) |
| Wait(Int64) |
Hace que el subproceso actual espere hasta que se despierte, normalmente por ser <em>notificado</em> o <em>interrumpido</em>, o hasta que haya transcurrido una cierta cantidad de tiempo real. (Heredado de Object) |
Implementaciones de interfaz explícitas
| Nombre | Description |
|---|---|
| IJavaPeerable.Disposed() |
Notifica al tiempo de ejecución de interoperabilidad que se ha eliminado este mismo nivel administrado. (Heredado de Object) |
| IJavaPeerable.DisposeUnlessReferenced() |
Libera este Java del mismo nivel a menos que otra referencia administrada lo conserve. (Heredado de Object) |
| IJavaPeerable.Finalized() |
Notifica al tiempo de ejecución de interoperabilidad que se ha finalizado este mismo nivel administrado. (Heredado de Object) |
| IJavaPeerable.JniManagedPeerState |
Obtiene el estado que describe la relación entre este par administrado y su referencia de JNI. (Heredado de Object) |
| IJavaPeerable.SetJniIdentityHashCode(Int32) |
Establece el código hash de identidad de interoperabilidad para este Java del mismo nivel. (Heredado de Object) |
| IJavaPeerable.SetJniManagedPeerState(JniManagedPeerStates) |
Establece el estado del mismo nivel administrado y JNI para este Java del mismo nivel. (Heredado de Object) |
| IJavaPeerable.SetPeerReference(JniObjectReference) |
Establece la referencia de objeto JNI usada por este par administrado. (Heredado de Object) |
Métodos de extensión
| Nombre | Description |
|---|---|
| GetJniTypeName(IJavaPeerable) |
Obtiene el nombre JNI del tipo de la instancia |
| JavaAs<TResult>(IJavaPeerable) |
Intente coerción |
| JavaCast<TResult>(IJavaObject) |
Realiza una conversión de tipos comprobados en tiempo de ejecución de Android. |
| JavaCast<TResult>(IJavaObject) |
StrictMode es una herramienta de desarrollo que detecta las cosas que podría estar haciendo por accidente y las lleva a su atención para que pueda corregirlas. |
| TryJavaCast<TResult>(IJavaPeerable, TResult) |
Intente coerción |