2009-11-25 5 views
7

Nella mia attività ci sono alcune cose in corso in un thread in background, che viene avviato in Activity_1. L'elaborazione del thread in background richiede un po 'di tempo e desidero avvisare l'utente quando viene completato tramite AlertDialog. Tuttavia, l'utente potrebbe essere cambiato in Activity_2 o Activity_3 nel frattempo e vorrei far apparire la AlertDialog sempre nell'attività corrente.Android: genera AlertDialog dal thread di sfondo

Qualche idea su come realizzare questo?

risposta

3

Ho finito per fare qualcosa di simile nel mio thread in background. Funziona, ma non è sicuro che sia una soluzione "buona".

Looper.prepare(); 
mActivity.showDialogAlertDefault(); 
Looper.loop(); 
Looper.myLooper().quit(); 
+0

Questo ha funzionato anche per me, tuttavia, dopo la comparsa del messaggio di avviso sembra che ritorni in esecuzione il thread che stava eseguendo prima che comparisse il messaggio di alertdialog. Eventuali suggerimenti? Vuoi vedere il mio codice? Codice – prolink007

+0

invocando con estremo ritardo di volta in volta. –

0

Questo probabilmente significa che il modo corretto è utilizzare un servizio, anziché un semplice thread in background. Il tuo lavoro in background sarà più resistente alla sospensione o all'arresto e non dovrai preoccuparti di creare un AsyncTask che tenga costantemente traccia di un altro genitore di attività.

+0

Il mio "thread in background" è in realtà un servizio separato. Quello che sto cercando, però, è un messaggio globale dell'applicazione (Dialog) che può essere generato ovunque nell'applicazione. Ciò significa che devo implementare un listener e una finestra di dialogo in ogni attività o posso farlo in un singolo punto per l'intera applicazione. L'altra domanda è: cosa sto ascoltando (è un intento o qualcos'altro)? – znq