Cómo hacer un brindis en AsyncTask, me incitan a la utilizada Looper
-
26-09-2019 - |
Pregunta
He tareas completado por AsyncTask en segundo plano. En algún momento tengo que emitir una tostada de que algo se ha completado.
he probado y me ha fallado porque
Caused by: java.lang.RuntimeException: Can't create handler inside thread that has not called Looper.prepare()
¿Cómo puedo hacer eso?
Solución
onPostExecute - se ejecuta en hilo de interfaz de usuario
o
publishProgress()
; en su doinbackground y
protected void onProgressUpdate(Integer... progress) {
}
http://developer.android.com/reference/android/os/ AsyncTask.html
Otros consejos
Puede pan tostado en el interior doInBackground
añadir este código en la que desea tostadas aparecerá
runOnUiThread(new Runnable() {
public void run() {
Toast.makeText(<your class name>.this, "Cool Ha?", Toast.LENGTH_SHORT).show();
}
});
También puede utilizar runOnUiThread método para manipular la interfaz de usuario de subprocesos en segundo plano.
Si desea utilizar la tostada Debe utilizar 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();
}
Si desea mostrar la tostada del subproceso de fondo que va a tener que llamar a runOnUiThread de doInBackground. No creo que hay otra manera.
Editar: retiro lo dicho. Creo que se puede aplicar onProgressUpdate, que se ejecuta en el hilo de interfaz de usuario, para mostrar las llamadas Toast y hacer a partir de publishProgress doInBackground.
Si desea mostrar la tostada en doInBackground, se puede utilizar en el método de OnPostExecute AsyncTask.
protected void onPostExecute(String file_url) {
Toast.makeText(getApplicationContext(),"Your Message", Toast.LENGTH_LONG).show();
pDialog.dismiss();//dismiss the progress dialouge
}