Handler 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í.
Un controlador permite enviar y procesar y ejecutar Message objetos asociados con el subproceso MessageQueue.
[Android.Runtime.Register("android/os/Handler", DoNotGenerateAcw=true)]
public class Handler : Java.Lang.Object
[<Android.Runtime.Register("android/os/Handler", DoNotGenerateAcw=true)>]
type Handler = class
inherit Object
- Herencia
- Derivado
- Atributos
Comentarios
Un controlador permite enviar y procesar y ejecutar Message objetos asociados con el subproceso MessageQueue. Cada instancia del controlador está asociada a un único subproceso y a la cola de mensajes de ese subproceso. Al crear un nuevo controlador, está enlazado a .Looper Entregará mensajes y ejecutará a esa cola de mensajes de Looper y las ejecutará en ese subproceso de Looper.
Hay dos usos principales para un controlador: (1) para programar mensajes y runnables que se ejecutarán en algún momento en el futuro; y (2) para poner en cola una acción que se va a realizar en un subproceso diferente al suyo propio.
La programación de mensajes se realiza con los #postmétodos , #postAtTime(Runnable, long), #postDelayed#sendEmptyMessage, #sendMessage, , #sendMessageAtTimey #sendMessageDelayed . Las <versiones em>post</em> permiten poner en cola objetos runnables a los que llamará la cola de mensajes cuando se reciben; las <versiones em>sendMessage</em> le permiten poner en cola un Message objeto que contiene un conjunto de datos que el método del #handleMessage controlador procesará (lo que requiere que implemente una subclase de Handler).
Al publicar o enviar a un controlador, puede permitir que el elemento se procese tan pronto como la cola de mensajes esté lista para hacerlo, o especificar un retraso antes de que se procese o el tiempo absoluto para que se procese. Los dos últimos le permiten implementar tiempos de espera, tics y otro comportamiento basado en tiempo.
Cuando se crea un proceso para la aplicación, su subproceso principal se dedica a ejecutar una cola de mensajes que se encarga de administrar los objetos de aplicación de nivel superior (actividades, receptores de difusión, etc.) y las ventanas que crean. Puede crear sus propios subprocesos y comunicarse con el subproceso de aplicación principal a través de un controlador. Esto se hace llamando a los mismos <métodos em>post</em> o <em>sendMessage</em> como antes, pero desde el nuevo subproceso. A continuación, el objeto Runnable o Message especificado se programarán en la cola de mensajes del controlador y se procesarán cuando corresponda.
<Consideraciones de rendimiento de h2>al usar Handler</h2>
Tenga en cuenta que los métodos "has" y "remove" de Handler pueden ser muy lentos porque estas operaciones examinan toda la cola de mensajes pendientes. Si el elemento MessageQueue subyacente Loopertiene muchos mensajes pendientes, esto puede ser costoso.
<ul><li>En lugar de quitar un mensaje o una devolución de llamada para cancelar una operación pendiente, considere la posibilidad de establecer una marca para indicar la cancelación y hacer que la operación compruebe la marca antes de continuar. <li>En lugar de comprobar si la cola tiene un mensaje o una devolución de llamada para buscar si aún no se ha producido una operación pendiente, considere la posibilidad de tener esa operación establecida en una marca para indicar que ha comenzado. </ul>
Consulte java.util.concurrent para conocer los primitivos de simultaneidad estándar.
Documentación de Java para android.os.Handler.
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.
Constructores
| Nombre | Description |
|---|---|
| Handler() |
El constructor predeterminado asocia este controlador con para |
| Handler(Action<Message>) |
Inicializa una nueva instancia de la clase Handler. |
| Handler(Handler+ICallback) |
Constructor asocia este controlador con para Looper el subproceso actual y toma una interfaz de devolución de llamada en la que puede controlar los mensajes. |
| Handler(IntPtr, JniHandleOwnership) |
Constructor utilizado al crear representaciones administradas de objetos JNI; llamado por el tiempo de ejecución. |
| Handler(Looper, Handler+ICallback) |
Use el proporcionado Looper en lugar del predeterminado y tome una interfaz de devolución de llamada en la que controlar los mensajes. |
| Handler(Looper) |
Use el proporcionado |
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) |
| JniManagedPeerState |
Un controlador permite enviar y procesar y ejecutar |
| JniPeerMembers |
Proporciona metadatos de miembro del mismo nivel de JNI para este tipo. |
| Looper |
Obtiene el valor de Looper. |
| 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. |
| ThresholdType |
Esta API admite la infraestructura mono para Android y no está pensada para usarse directamente desde el código. |
Métodos
| Nombre | Description |
|---|---|
| Clone() |
Crea y devuelve una copia de este objeto. (Heredado de Object) |
| Construct(JniObjectReference, JniObjectReferenceOptions) |
Un controlador permite enviar y procesar y ejecutar |
| CreateAsync(Looper, Handler+ICallback) |
Cree un nuevo controlador cuyos mensajes publicados y runnables no estén sujetos a barreras de sincronización, como mostrar vsync. |
| CreateAsync(Looper) |
Cree un nuevo controlador cuyos mensajes publicados y runnables no estén sujetos a barreras de sincronización, como mostrar vsync. |
| DispatchMessage(Message) |
Controle los mensajes del sistema aquí. |
| 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) |
| DisposeUnlessReferenced() |
Un controlador permite enviar y procesar y ejecutar |
| Dump(IPrinter, String) |
Escribe el estado de este objeto en la salida proporcionada. |
| DumpAsync(IPrinter, String) |
Realiza de forma asincrónica la operación correspondiente. |
| Equals(Object) |
Un controlador permite enviar y procesar y ejecutar |
| 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) |
| GetMessageName(Message) |
Devuelve una cadena que representa el nombre del mensaje especificado. |
| HandleMessage(Message) |
Las subclases deben implementar esto para recibir mensajes. |
| HasCallbacks(IRunnable) |
Compruebe si hay publicaciones pendientes de mensajes con devolución de llamada r en la cola de mensajes. |
| HasMessages(Int32, Object) |
Compruebe si hay publicaciones pendientes de mensajes con el código "what" y cuyo obj es "object" en la cola de mensajes. |
| HasMessages(Int32) |
Compruebe si hay entradas pendientes de mensajes con el código "what" en la cola de mensajes. |
| 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) |
| 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) |
| ObtainMessage() |
Devuelve un nuevo |
| ObtainMessage(Int32, Int32, Int32, Object) |
|
| ObtainMessage(Int32, Int32, Int32) |
|
| ObtainMessage(Int32, Object) |
|
| ObtainMessage(Int32) |
|
| Post(Action) |
Agrega el ejecutable a la cola de mensajes de este controlador. |
| Post(IRunnable) |
Hace que se agregue runnable r a la cola de mensajes. |
| PostAtFrontOfQueue(Action) |
Publica el runnable para la siguiente iteración de la cola de mensajes de este controlador. |
| PostAtFrontOfQueue(IRunnable) |
Envía un mensaje a un objeto que implementa Runnable. |
| PostAtTime(Action, Int64) |
Publica el runnable para que se ejecute en el tiempo de actividad especificado. |
| PostAtTime(Action, Object, Int64) |
Publica el runnable para que se ejecute en el tiempo de actividad especificado. |
| PostAtTime(IRunnable, Int64) |
Hace que se agregue runnable r a la cola de mensajes para que se ejecute en un momento específico proporcionado por <var>uptimeMillis</var>. |
| PostAtTime(IRunnable, Object, Int64) |
Hace que se agregue runnable r a la cola de mensajes para que se ejecute en un momento específico proporcionado por <var>uptimeMillis</var>. |
| PostDelayed(Action, Int64) |
Publica el runnable para que se ejecute después del retraso especificado. |
| PostDelayed(IRunnable, Int64) |
Hace que runnable r se agregue a la cola de mensajes para ejecutarse después de que transcurre el tiempo especificado. |
| PostDelayed(IRunnable, Object, Int64) |
Hace que runnable r se agregue a la cola de mensajes para ejecutarse después de que transcurre el tiempo especificado. |
| RemoveCallbacks(Action, Object) |
Quita las devoluciones de llamada pendientes para el runnable especificado. |
| RemoveCallbacks(Action) |
Quita las devoluciones de llamada pendientes para el runnable especificado. |
| RemoveCallbacks(IRunnable, Object) |
Quite las publicaciones pendientes de runnable <var>r</var con >token</>var<> de objeto que se encuentran en la cola de mensajes. |
| RemoveCallbacks(IRunnable) |
Quite las publicaciones pendientes de Runnable r que se encuentran en la cola de mensajes. |
| RemoveCallbacksAndMessages(Object) |
Quite las publicaciones pendientes de devoluciones de llamada y mensajes enviados cuya <var>obj</var> es <var>token</var>. |
| RemoveMessages(Int32, Object) |
Quite las publicaciones pendientes de mensajes con el código "what" y cuyo obj es "object" que se encuentran en la cola de mensajes. |
| RemoveMessages(Int32) |
Quite las publicaciones pendientes de mensajes con el código "what" que se encuentra en la cola de mensajes. |
| SendEmptyMessage(Int32) |
Envía un mensaje que contiene solo el valor what. |
| SendEmptyMessageAtTime(Int32, Int64) |
Envía un mensaje que contiene solo el valor que se va a entregar en un momento específico. |
| SendEmptyMessageDelayed(Int32, Int64) |
Envía un mensaje que contiene solo el valor que se va a entregar una vez transcurrido el tiempo especificado. |
| SendMessage(Message) |
Inserta un mensaje al final de la cola de mensajes después de todos los mensajes pendientes antes de la hora actual. |
| SendMessageAtFrontOfQueue(Message) |
Poner en cola un mensaje en la parte frontal de la cola de mensajes, que se va a procesar en la siguiente iteración del bucle de mensajes. |
| SendMessageAtTime(Message, Int64) |
Poner en cola un mensaje en la cola de mensajes después de todos los mensajes pendientes antes de la hora absoluta (en milisegundos) <var>uptimeMillis</var>. |
| SendMessageDelayed(Message, Int64) |
Poner en cola un mensaje en la cola de mensajes después de todos los mensajes pendientes antes (hora actual + delayMillis). |
| SetHandle(IntPtr, JniHandleOwnership) |
Establece la propiedad Handle. (Heredado de Object) |
| SetPeerReference(JniObjectReference, JniObjectReferenceOptions) |
Un controlador permite enviar y procesar y ejecutar |
| 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() |
Un controlador permite enviar y procesar y ejecutar |
| IJavaPeerable.Finalized() |
Un controlador permite enviar y procesar y ejecutar |
| IJavaPeerable.JniObjectReferenceControlBlock |
Un controlador permite enviar y procesar y ejecutar |
| IJavaPeerable.SetJniIdentityHashCode(Int32) |
Un controlador permite enviar y procesar y ejecutar |
| IJavaPeerable.SetJniManagedPeerState(JniManagedPeerStates) |
Un controlador permite enviar y procesar y ejecutar |
| IJavaPeerable.SetPeerReference(JniObjectReference) |
Un controlador permite enviar y procesar y ejecutar |
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) |
Un controlador permite enviar y procesar y ejecutar |
| TryJavaCast<TResult>(IJavaPeerable, TResult) |
Intente coerción |