Como criar um brinde na assíncada, sou solicitado a usar o looper
-
26-09-2019 - |
Pergunta
Eu tenho tarefas concluídas pela assíncena em segundo plano. Em algum momento, preciso emitir um brinde que algo esteja concluído.
Eu tentei e falhei porqueCaused by: java.lang.RuntimeException: Can't create handler inside thread that has not called Looper.prepare()
Como eu posso fazer isso?
Solução
OnPostexecute - Executa no tópico da interface do usuário ou publishProgress()
; no seu doinbackground e
protected void onProgressUpdate(Integer... progress) {
}
http://developer.android.com/reference/android/os/asynctask.html
Outras dicas
você pode brindar dentro do doinbackground
Adicione este código onde você deseja brindar
runOnUiThread(new Runnable() {
public void run() {
Toast.makeText(<your class name>.this, "Cool Ha?", Toast.LENGTH_SHORT).show();
}
});
Você também pode usar runonuithread Método para manipular sua interface do usuário de threads de segundo plano.
Se você quiser usar o Toast, use este método: OnProgressUpdate ()
protected Integer doInBackground(Void...Params) {
int check_point = 1;
publishProgress(check_point);
return check_point;
}
protected void onProgressUpdate(Integer integers) {
if(integers == 1) {
Toast.makeText(classname.this, "Text", 0).show();
}
Se você deseja exibir a torrada do thread em segundo plano, precisará ligar para o Runonuithread do Doinbackground. Não acredito que haja outra maneira.
EDIT: Eu pego isso de volta. Eu acho que você pode implementar o OnProgressUpdate, que é executado no tópico da interface do usuário, para mostrar a torrada e fazer chamadas para publicar progressos do Doinbackground.
Se você deseja exibir a torrada no Doinbackground, poderá usá -la no método OnPostexecute de assíncrogem.
protected void onPostExecute(String file_url) {
Toast.makeText(getApplicationContext(),"Your Message", Toast.LENGTH_LONG).show();
pDialog.dismiss();//dismiss the progress dialouge
}