Mi aplicación para Android emplea un cálculo particularmente grande que sigue bloqueando el sistema porque está en el hilo de UI en la Actividad. Tengo poca confianza en el multihilo y por eso quiero obtener algunos consejos sobre cómo hacerlo correctamente. Esto es lo que tengoTomando computación pesada del Android UI Thread
class ActivtyName extends Activity{
boolean threadcomplete = false;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//stuff
Runnable newthread = new Runnable(){
@Override
public void run() {
doBigComputation();
threadcomplete=true;
}
};
newthread.run();
boolean b = true;
while(b){
if(threadcomplete){
b=false;
startTheApp();
}
}
}
}
Ahora, estoy bastante seguro de lo que he hecho no es "correcta". (Parece que funciona, sin embargo, el sistema no falla). Básicamente, no estoy seguro de cómo se puede decir a la cadena de interfaz de usuario que newthread ha terminado el cálculo sin este booleano, threadcomplete. ¿Hay una forma "correcta" de hacer esto?
echar un vistazo en AsyncTask, http://developer.android.com/reference/android/os/AsyncTask.html –