StrictMode Clase

Definición

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
StrictMode
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 Objectobjeto .

(Heredado de Object)
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 ThreadPolicy de #getThreadPolicy, lo modifica para permitir lecturas de disco y establece la nueva directiva con #setThreadPolicy, devolviendo la directiva anterior para que pueda restaurarla al final de un bloque.

AllowThreadDiskWrites()

Un contenedor cómodo que toma el actual ThreadPolicy de #getThreadPolicy, lo modifica para permitir tanto lecturas y escrituras de disco como establece la nueva directiva con #setThreadPolicy, devolviendo la directiva antigua para que pueda restaurarla al final de un bloque.

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 self.

JavaAs<TResult>(IJavaPeerable)

Intente coerción self para escribir TResult, comprobando que la coerción es válida en el lado de Java.

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 self para escribir TResult, comprobando que la coerción es válida en el lado de Java.

Se aplica a