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?

¿Fue útil?

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
}
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top