La mia app per Android utilizza un calcolo particolarmente grande che continua a bloccare il sistema perché si trova sul thread dell'interfaccia utente nell'attività. Ho poca fiducia nel multithreading e quindi voglio avere qualche consiglio su come farlo correttamente. Questo è ciò che hoPrendendo il calcolo pesante dal thread dell'interfaccia utente Android
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();
}
}
}
}
Ora, io sono abbastanza sicuro quello che ho fatto non è "corretto". (Sembra funzionare comunque. Il sistema non si blocca). Fondamentalmente, non sono sicuro di come il thread dell'interfaccia utente possa essere detto che newthread ha terminato il calcolo senza questo booleano, thread-completo. Esiste un modo "corretto" per farlo?
dare uno sguardo su AsyncTask, http://developer.android.com/reference/android/os/AsyncTask.html –