Esto se puede hacer usando mensaje de concurrencia de cruce y un único controlador.Prueba de concepto sigue:
private Handler myHandler= new Handler(){
@Override
public void handleMessage(Message msg){
switch(msg.what){
case 0:
Toast.makeText(Main.this,"Message0", Toast.LENGTH_SHORT).show();
Thread thread= new Thread(new Runnable() {
public void run() {
try {
Thread.sleep(3000);
}
catch(Exception e){}
myHandler.sendEmptyMessage(2);
}
});
thread.setDaemon(true); // <== I am a service provider. KILL ME if the non-daemon thread ConfuseText quits
thread.start();
break;
case 1:
Toast.makeText(Main.this,"Message1", Toast.LENGTH_SHORT).show();
break;
case 2:
Toast.makeText(Main.this,"Message2", Toast.LENGTH_SHORT).show();
break;
default:
super.handleMessage(msg);
break;
}
}
};
que puso en marcha el primer hilo en un clic de botón como en:
ON CLICK HANDLER
threadButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
Thread thread= new Thread(new Runnable() {
public void run() {
try {
Thread.sleep(1000);
}
catch(Exception e){
}
myHandler.sendEmptyMessage(0);
try {
Thread.sleep(3000);
}
catch(Exception e){
}
myHandler.sendEmptyMessage(1);
}
});
thread.setDaemon(true); // <== I am a service provider. KILL ME if the non-daemon thread ConfuseText quits
thread.start();
}
});
Las llamadas para enhebrar el sueño es para imitar una tarea intensiva tiempo.
Lanner: Gracias. Eso soluciona perfectamente mi problema. – OceanBlue
¿Qué pasa con 'onPreExecute()' que también se ejecuta en el subproceso de interfaz de usuario? http://developer.android.com/reference/android/os/AsyncTask.html#onPreExecute%28%29 –
@ ban-geoengineering El método onPreExecute(), como su nombre lo indica, se ejecutará antes que cualquier otro método en el AsyncTask, sin embargo, independientemente de que también se ejecute en el hilo de la interfaz de usuario. Básicamente, en caso de que necesite hacer algún cálculo o lógica cada vez antes de que comience doInBackground (...), este es su método. – tsukanomon