Domanda

Esiste un modo per impedire l'avvio del metodo / thread doInBackground di un AsyncTask fino a quando un AlertDialog che viene visualizzato durante il metodo onPreExecute non è stato ignorato?

doInBackground è pensato per essere eseguito solo al termine di onPreExecute, tuttavia per quanto ne so, avere un AlertDialog aperto non impedisce il completamento di onPreExecute.

Dettagli: Al momento sono sul mio telefono, quindi non posso fornire un esempio di codice, ma la panoramica del codice è che si tratta di un'app che richiede dati a cui è possibile accedere solo tramite dati mobili poiché si trova sulla rete telco. Il preExec del mio getData asynctask controlla prima se il Wi-Fi è attivo e, in tal caso, visualizza una finestra di dialogo di avviso con le opzioni Disabilita Wifi e Annulla.

Annulla dovrebbe terminare l'attività e Disable Wifi dovrebbe, beh, disabilitare il Wi-Fi. Il metodo doInBg controlla quindi se la connessione dati mobile è attiva e, in caso contrario, entra in un ciclo di sospensione finché non lo è. Una volta che è attivo, doInBg ottiene i dati ...

Attualmente, se il Wi-Fi è attivo, doInBg si avvia prima che la finestra di dialogo venga chiusa, rimanendo intrappolato nel ciclo di sospensione fino a quando qualcosa non causa la connessione mobile ... Questo porta a potenziali problemi che vorrei evitare.

È stato utile?

Soluzione

Puoi provare ad avviarlo da qualche parte per verificare se il tuo wifi è attivo, quindi utilizzare AlertDialogListener per rilevare l'azione dei pulsanti in AlertDIalog.quindi puoi avviare Async all'interno di AlertDialogListener.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top