Ho una funzione, AppHelper.isOnline(Context context)
, chiamo in varie parti della mia applicazione per verificare che una sessione non abbia scaduto prima di fare una richiesta HTTP.Android attendere AsyncTask per finire
public void onClick(View v) {
Intent intent = null;
switch (v.getId()) {
case R.id.buttonPagamenti:
if (AppHelper.isOnline(this))
{
//here AppHelper.isOnline should have finished it's async task
intent = new Intent(this, OrdineCreaActivity.class);
this.startActivityForResult(intent, R.id.buttonPagamenti);
}
break;
...
All'interno AppHelper.isOnline()
, sto eseguendo una AsyncTask
che accede, rendendo così una richiesta di rete, che non può essere eseguito su UI perché altrimenti ottengo un'eccezione. Devo aspettare che finisca PRIMA di riprendere con il codice all'interno del if. Come posso fare questo ?
Il problema è che l'attività inizia primariamente, quindi viene eseguito AsyncTask
, quindi quando l'attività si aspetta una sessione di accesso valida, si interrompe.
ho provato il join, ma il problema è async.exec() non si avvia prima che il join entri in gioco, quindi l'app rimane indefinita, quindi proverò a provare l'attività.get – max4ever
l'attività asincrona ha una finestra di dialogo di avanzamento ma non impedisce alla nuova attività di iniziare – max4ever
task.get() è proprio quello di cui avevo bisogno, grazie !!! – max4ever