Mostrare notifiche e barra di avanzamento da una istanza di AsyncTask

La classe AsyncTask è utilizzata per eseguire operazioni in background e potrebbe essere utile mostrare notifiche e barre di avanzamento per avvisare l’utente.
In questo articolo riporto un esempio in cui sono create due istanze di AsyncTask che mostrano ciascuna una notifica di avvio, una barra di avanzamento e una notifica di fine.

  1. la classe MainActivity, l’activity principale

    premendo il pulsante contenuto nel layout sono create ed eseguite due istanze di AsyncTask, se la versione API è minore di 11 (HONEYCOMB) le istanze di AsyncTask sono lanciate con il metodo execute() altrimenti con il metodo executeOnExecutor() disponibile a partire dalla versione API 11.
    E’ preferibile lanciare gli AsyncTask usando il metodo executeOnExecutor() perchè in questo modo sono eseguiti contemporaneamente ed è più evidente quello che intendo mostrare.
  2. la classe NotificationTask che estende AsyncTask
  3. ci sono tre metodi sovrascritti:

    • onPreExecute(): qui inizializzo le notifiche, in particolare assegno alla notifica l’id passato al costruttore (riga 163), per cui le due istanze di AsyncTask hanno id uguale a 1 e 2
    • doInBackground(Integer… params): aspetto 3 secondi e poi mostro la barra di avanzamento, nella prima istanza di AsyncTask la durata è di 10 secondi, nella seconda di 5 secondi, questi valori sono impostati con l’argomento del metodo execute() o executeOnExecutor()
    • onPostExecute(Void result): la notifica “completed” che apre la ResultActivity

  4. la classe ResultActivity mostrata quando si clicca sulla notifica “completed”
  5. AndroidManifest.xml
  6. i layout, molto semplici
    • res/layout/activity_main.xml
    • res/layout/activity_result.xml

Di seguito le varie schermata dell’app, nota che le varie notifiche sono distinte in base all’id.
main started downloading completed result

Qui puoi scaricare i codice sorgente dell’app.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Questo sito usa Akismet per ridurre lo spam. Scopri come i tuoi dati vengono elaborati.