Voglio eseguire un asynctask dopo aver terminato la prima attività. Ma quando si stampa lo stato della prima attività, viene sempre visualizzato RUNNING. Se si eseguono entrambe le attività parallelamente, verrà eseguita solo un'attività più piccola. Sto eseguendo entrambe le attività sul metodo oncreate. Qualche idea?Stato asynctask sempre in esecuzione
Ecco il mio codice di esempio
public class test extends Activity
{
ExecuteTask1 task1;
ExecuteTask2 task2;
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
task1 = new ExecuteTask1();
task1.execute(token);
System.out.println(task1.getStatus());
if(task1.getStatus() ==AsyncTask.Status.FINISHED)
{
task2 = new ExecuteTask2();
task2.execute(token);
}
}
}
Grazie a Ted la sua funzione di lavoro. – Reji
Potrebbe essere leggermente fuori tema ma può essere che getStatus() restituisca Running se un AsyncTask è stato cancellato prima di oO? Almeno questo è quello che sto ottenendo in questo momento, nonostante abbia cancellato il mio AsyncTask (a meno che lo stesso compito non sia in qualche modo auto-ripristinato xD). – AgentKnopf
@Zainodis - 'AsyncTask.getStatus()' può effettivamente restituire 'RUNNING' dopo che' cancel() 'è stato chiamato e restituisce' true'. La chiamata a 'cancel()' può, per esempio, chiamare 'interrupt()' sul thread sottostante o semplicemente impostare il flag 'isCancelled()' per 'AsyncTask', ma lo stato di' AsyncTask' ha vinto ' t cambiare fino a quando il thread sottostante rileva l'interrupt o modifica il valore del flag e in realtà esce. Ecco perché i documenti raccomandano che 'doInBackground()' controlli periodicamente il valore di 'isCancelled()' e "finisca l'attività il prima possibile". –