Handler Classe

Definição

Um manipulador permite que você envie e processe Message e execute objetos associados a um thread.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
Herança
Derivado
Atributos

Comentários

Um manipulador permite que você envie e processe Message e execute objetos associados a um thread.MessageQueue Cada instância do Manipulador está associada a um único thread e à fila de mensagens desse thread. Quando você cria um novo Manipulador, ele é associado a um Looper. Ele fornecerá mensagens e executáveis para a fila de mensagens do Looper e as executará no thread do Looper.

Há dois usos principais para um Manipulador: (1) para agendar mensagens e executáveis a serem executados em algum momento no futuro; e (2) para enfileirar uma ação a ser executada em um thread diferente do seu.

O agendamento de mensagens é realizado com os #postmétodos , , #postAtTime(Runnable, long)#postDelayed, #sendEmptyMessage, #sendMessage#sendMessageAtTimee #sendMessageDelayed , As <versões em>post</em> permitem que você enfileirar objetos executáveis para serem chamados pela fila de mensagens quando eles são recebidos; as <versões em>sendMessage</em> permitem que você enfileira um Message objeto contendo um pacote de dados que será processado pelo método do #handleMessage Manipulador (exigindo que você implemente uma subclasse do Manipulador).

Ao postar ou enviar para um Manipulador, você pode permitir que o item seja processado assim que a fila de mensagens estiver pronta para fazer isso ou especificar um atraso antes de ser processado ou tempo absoluto para que ele seja processado. Os dois últimos permitem implementar tempos limite, tiques e outros comportamentos baseados em tempo.

Quando um processo é criado para seu aplicativo, seu thread principal é dedicado à execução de uma fila de mensagens que cuida do gerenciamento dos objetos de aplicativo de nível superior (atividades, receptores de difusão etc. ) e todas as janelas que eles criam. Você pode criar seus próprios threads e se comunicar novamente com o thread do aplicativo principal por meio de um Manipulador. Isso é feito chamando os mesmos <métodos em>post</em> ou <em>sendMessage</em> como antes, mas do seu novo thread. O Runnable ou a mensagem fornecida será agendado na fila de mensagens do Manipulador e processado quando apropriado.

<Considerações de desempenho h2>ao usar Handler</h2>

Lembre-se de Handler que os métodos "has" e "remove" podem ser muito lentos porque essas operações verificam toda a fila de mensagens pendentes. Se os 's MessageQueue subjacentes Loopertiverem muitas mensagens pendentes, isso pode ser caro.

<ul><li>Em vez de remover uma mensagem ou um retorno de chamada para cancelar uma operação pendente, considere configurar um sinalizador para indicar o cancelamento e fazer com que a operação verifique o sinalizador antes de prosseguir. <li>Em vez de verificar se a fila tem uma mensagem ou um retorno de chamada para descobrir se uma operação pendente ainda não ocorreu, considere fazer com que essa operação defina um sinalizador para indicar que ela foi iniciada. </ul>

Consulte java.util.concurrent os primitivos de simultaneidade padrão.

Java documentação para android.os.Handler.

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.

Construtores

Nome Description
Handler()

O construtor padrão associa esse manipulador ao Looper thread atual.

Handler(Action<Message>)

Inicializa uma nova instância da classe Handler.

Handler(Handler+ICallback)

O construtor associa esse manipulador ao Looper thread atual e usa uma interface de retorno de chamada na qual você pode lidar com mensagens.

Handler(IntPtr, JniHandleOwnership)

Um construtor usado ao criar representações gerenciadas de objetos JNI; chamado pelo runtime.

Handler(Looper, Handler+ICallback)

Use o fornecido Looper em vez do padrão e use uma interface de retorno de chamada na qual lidar com mensagens.

Handler(Looper)

Use o fornecido Looper em vez do padrão.

Propriedades

Nome Description
Class

Retorna a classe de runtime deste Object.

(Herdado de Object)
Handle

O identificador para a instância subjacente do Android.

(Herdado de Object)
JniIdentityHashCode

Obtém o código de hash de identidade atribuído a esse par Java pelo runtime de interoperabilidade.

(Herdado de Object)
JniManagedPeerState

Um manipulador permite que você envie e processe Message e execute objetos associados a um thread.MessageQueue

(Herdado de JavaObject)
JniPeerMembers

Fornece metadados de membro par JNI para esse tipo.

Looper

Obtém o valor do Looper.

PeerReference

Obtém a referência de objeto JNI para este par Java.

(Herdado de Object)
ThresholdClass

Essa API dá suporte à infraestrutura do Mono para Android e não se destina a ser usada diretamente do seu código.

ThresholdType

Essa API dá suporte à infraestrutura do Mono para Android e não se destina a ser usada diretamente do seu código.

Métodos

Nome Description
Clone()

Cria e retorna uma cópia desse objeto.

(Herdado de Object)
Construct(JniObjectReference, JniObjectReferenceOptions)

Um manipulador permite que você envie e processe Message e execute objetos associados a um thread.MessageQueue

(Herdado de JavaObject)
CreateAsync(Looper, Handler+ICallback)

Crie um novo Manipulador cujas mensagens e runnables postados não estão sujeitos a barreiras de sincronização, como exibição vsync.

CreateAsync(Looper)

Crie um novo Manipulador cujas mensagens e runnables postados não estão sujeitos a barreiras de sincronização, como exibição vsync.

DispatchMessage(Message)

Manipule as mensagens do sistema aqui.

Dispose()

Libera os recursos mantidos por esse par Java.

(Herdado de Object)
Dispose(Boolean)

Libera os recursos mantidos por esse par Java.

(Herdado de Object)
DisposeUnlessReferenced()

Um manipulador permite que você envie e processe Message e execute objetos associados a um thread.MessageQueue

(Herdado de JavaObject)
Dump(IPrinter, String)

Grava o estado desse objeto na saída fornecida.

DumpAsync(IPrinter, String)

Executa a operação correspondente de forma assíncrona.

Equals(Object)

Um manipulador permite que você envie e processe Message e execute objetos associados a um thread.MessageQueue

(Herdado de JavaObject)
Equals(Object)

Indica se algum outro objeto é "igual a" este.

(Herdado de Object)
GetHashCode()

Retorna um valor de código hash para o objeto.

(Herdado de Object)
GetMessageName(Message)

Retorna uma cadeia de caracteres que representa o nome da mensagem especificada.

HandleMessage(Message)

As subclasses devem implementar isso para receber mensagens.

HasCallbacks(IRunnable)

Verifique se há alguma postagem pendente de mensagens com retorno de chamada r na fila de mensagens.

HasMessages(Int32, Object)

Verifique se há alguma postagem pendente de mensagens com o código 'o quê' e cujo obj é 'objeto' na fila de mensagens.

HasMessages(Int32)

Verifique se há alguma postagem pendente de mensagens com o código 'o quê' na fila de mensagens.

JavaFinalize()

Chamado pelo coletor de lixo em um objeto quando a coleta de lixo determina que não há mais referências ao objeto.

(Herdado de Object)
Notify()

Ativa um único thread que está aguardando no monitor deste objeto.

(Herdado de Object)
NotifyAll()

Ativa todos os threads que estão aguardando no monitor deste objeto.

(Herdado de Object)
ObtainMessage()

Retorna um novo android.os.Message Message do pool de mensagens global.

ObtainMessage(Int32, Int32, Int32, Object)

O mesmo que #obtainMessage(), exceto que ele também define os valores obj, arg1 e arg2 na Mensagem retornada.

ObtainMessage(Int32, Int32, Int32)

O mesmo que #obtainMessage(), exceto que ele também define os membros o que, arg1 e arg2 da Mensagem retornada.

ObtainMessage(Int32, Object)

O mesmo que #obtainMessage(), exceto que ele também define o que e os membros obj da Mensagem retornada.

ObtainMessage(Int32)

O mesmo que #obtainMessage(), exceto que ele também define o membro da Mensagem retornada.

Post(Action)

Adiciona o runnable à fila de mensagens desse manipulador.

Post(IRunnable)

Faz com que o Runnable r seja adicionado à fila de mensagens.

PostAtFrontOfQueue(Action)

Posta o runnable para a próxima iteração da fila de mensagens desse manipulador.

PostAtFrontOfQueue(IRunnable)

Posta uma mensagem em um objeto que implementa Runnable.

PostAtTime(Action, Int64)

Posta o runnable a ser executado no tempo de atividade especificado.

PostAtTime(Action, Object, Int64)

Posta o runnable a ser executado no tempo de atividade especificado.

PostAtTime(IRunnable, Int64)

Faz com que o runnable r seja adicionado à fila de mensagens, a ser executado em um momento específico dado pelo <var>uptimeMillis</var>.

PostAtTime(IRunnable, Object, Int64)

Faz com que o runnable r seja adicionado à fila de mensagens, a ser executado em um momento específico dado pelo <var>uptimeMillis</var>.

PostDelayed(Action, Int64)

Posta o runnable a ser executado após o atraso especificado.

PostDelayed(IRunnable, Int64)

Faz com que o runnable r seja adicionado à fila de mensagens, a ser executado após o tempo especificado decorrido.

PostDelayed(IRunnable, Object, Int64)

Faz com que o runnable r seja adicionado à fila de mensagens, a ser executado após o tempo especificado decorrido.

RemoveCallbacks(Action, Object)

Remove os retornos de chamada pendentes para o runnable especificado.

RemoveCallbacks(Action)

Remove os retornos de chamada pendentes para o runnable especificado.

RemoveCallbacks(IRunnable, Object)

Remova as postagens pendentes de Runnable <var>r</var> com token< de var>de objeto</var> que estejam na fila de mensagens.

RemoveCallbacks(IRunnable)

Remova as postagens pendentes do Runnable r que estejam na fila de mensagens.

RemoveCallbacksAndMessages(Object)

Remova quaisquer postagens pendentes de retornos de chamada e mensagens enviadas cujo <var>obj</var> é <var>token</var>.

RemoveMessages(Int32, Object)

Remova todas as postagens pendentes de mensagens com o código 'what' e cujo obj é 'object' que estão na fila de mensagens.

RemoveMessages(Int32)

Remova as postagens pendentes de mensagens com o código 'o quê' que estão na fila de mensagens.

SendEmptyMessage(Int32)

Envia uma mensagem que contém apenas o valor.

SendEmptyMessageAtTime(Int32, Int64)

Envia uma mensagem que contém apenas o valor a ser entregue em um momento específico.

SendEmptyMessageDelayed(Int32, Int64)

Envia uma mensagem que contém apenas o valor a ser entregue após a quantidade de tempo especificada decorrido.

SendMessage(Message)

Envia uma mensagem para o final da fila de mensagens após todas as mensagens pendentes antes da hora atual.

SendMessageAtFrontOfQueue(Message)

Enfileirar uma mensagem na frente da fila de mensagens, a ser processada na próxima iteração do loop de mensagem.

SendMessageAtTime(Message, Int64)

Enfileirar uma mensagem na fila de mensagens após todas as mensagens pendentes antes do tempo absoluto (em milissegundos) <var>uptimeMillis</var>.

SendMessageDelayed(Message, Int64)

Enfileirar uma mensagem na fila de mensagens depois de todas as mensagens pendentes antes (hora atual + delayMillis).

SetHandle(IntPtr, JniHandleOwnership)

Define a propriedade Handle

(Herdado de Object)
SetPeerReference(JniObjectReference, JniObjectReferenceOptions)

Um manipulador permite que você envie e processe Message e execute objetos associados a um thread.MessageQueue

(Herdado de JavaObject)
ToArray<T>()

Cria uma matriz gerenciada com base nesse wrapper de matriz Java.

(Herdado de Object)
ToString()

Retorna uma representação de cadeia de caracteres do objeto.

(Herdado de Object)
UnregisterFromRuntime()

Cancela o registro desse par Java do runtime de interoperabilidade.

(Herdado de Object)
Wait()

Faz com que o thread atual aguarde até ser despertado, normalmente por ser <notificado/em> ou <em>interrompido</em>.<>

(Herdado de Object)
Wait(Int64, Int32)

Faz com que o thread atual aguarde até que ele seja despertado, normalmente por ser <>notificado</em> ou <em>interrompido</em>, ou até que uma determinada quantidade de tempo real tenha decorrido.

(Herdado de Object)
Wait(Int64)

Faz com que o thread atual aguarde até que ele seja despertado, normalmente por ser <>notificado</em> ou <em>interrompido</em>, ou até que uma determinada quantidade de tempo real tenha decorrido.

(Herdado de Object)

Implantações explícitas de interface

Nome Description
IJavaPeerable.Disposed()

Um manipulador permite que você envie e processe Message e execute objetos associados a um thread.MessageQueue

(Herdado de JavaObject)
IJavaPeerable.Finalized()

Um manipulador permite que você envie e processe Message e execute objetos associados a um thread.MessageQueue

(Herdado de JavaObject)
IJavaPeerable.JniObjectReferenceControlBlock

Um manipulador permite que você envie e processe Message e execute objetos associados a um thread.MessageQueue

(Herdado de JavaObject)
IJavaPeerable.SetJniIdentityHashCode(Int32)

Um manipulador permite que você envie e processe Message e execute objetos associados a um thread.MessageQueue

(Herdado de JavaObject)
IJavaPeerable.SetJniManagedPeerState(JniManagedPeerStates)

Um manipulador permite que você envie e processe Message e execute objetos associados a um thread.MessageQueue

(Herdado de JavaObject)
IJavaPeerable.SetPeerReference(JniObjectReference)

Um manipulador permite que você envie e processe Message e execute objetos associados a um thread.MessageQueue

(Herdado de JavaObject)

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)

Um manipulador permite que você envie e processe Message e execute objetos associados a um thread.MessageQueue

TryJavaCast<TResult>(IJavaPeerable, TResult)

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

Aplica-se a