Como posso exibir mensagens de brinde de um tópico?
android
multithreading
android-toast
Arutha
fonte
fonte
Respostas:
Você pode fazer isso chamando um
Activity
'srunOnUiThread
método de seu segmento:fonte
Thread
referência do objeto comoActivity
noActivity
'sonResume
. Remova-o noActivity
'sonPause
. Fazer as duas coisas sob umsynchronized
bloqueio que tanto oActivity
eThread
respeito.Activity
instância, você pode usar uma classe auxiliar simples, veja aqui: stackoverflow.com/a/18280318/1891118MyActivity.this.runOnUiThread()
funciona muito bem dentro de umThread
/ internoAsyncTask
.Gosto de ter um método chamado na minha atividade,
showToast
que posso chamar de qualquer lugar ...Eu então o chamo mais freqüentemente de dentro
MyActivity
de qualquer tópico como este ...fonte
Isso é semelhante a outras respostas, porém atualizadas para novas apis disponíveis e muito mais limpas. Além disso, não presume que você esteja em um Contexto de Atividade.
fonte
Uma abordagem que funciona de praticamente qualquer lugar, incluindo de lugares onde você não tem um
Activity
ouView
, é pegar umHandler
no tópico principal e mostrar o brinde:A vantagem dessa abordagem é que ela funciona com qualquer um
Context
, incluindoService
eApplication
.fonte
Como este ou esta , com uma
Runnable
que mostra aToast
. Nomeadamente,fonte
Às vezes, você precisa enviar uma mensagem de outro
Thread
para o thread de IU Esse tipo de cenário ocorre quando você não pode executar operações de rede / IO no thread de interface do usuário.O exemplo abaixo trata desse cenário.
Runnable
no thread de IU. Então poste seuRunnable
para manipulador emHandlerThread
Runnable
e envie-o de volta ao thread de IU e mostre umaToast
mensagem.Solução:
HandlerThread
:requestHandler
responseHandler
ehandleMessage
método de substituiçãopost
umaRunnable
tarefa emrequestHandler
Runnable
tarefa, chamadasendMessage
emresponseHandler
sendMessage
invocação de resultado dehandleMessage
emresponseHandler
.Message
e processe-os, atualize a IUCódigo de amostra:
Artigos úteis:
handlerthreads-and-why-you-should-use-them-in-your-android-apps
android-looper-handler-handlerthread-i
fonte
handler.sendMessage();
post()
Método de chamadahandler.post();
runOnUiThread()
view.post()
fonte
Você pode usar
Looper
para enviarToast
mensagem. Vá até este link para mais detalhes.e é chamado em seu tópico. O contexto pode estar
Activity.getContext()
vindo deActivity
você tem que mostrar o brinde.fonte
Fiz essa abordagem com base na resposta de mjaggard:
Funcionou bem para mim.
fonte
Eu encontrei o mesmo problema:
Antes: função onCreate
Depois: função onCreate
funcionou.
fonte