Skip to content
Android Blog Italia

Android Blog Italia

Tutto quello che devi sapere sul mondo Android e della tecnologia

Primary Menu
  • News
    • Visualizza Tutto
    • Smartphone
    • Tablet
    • Accessori
    • TUTTI GLI ARTICOLI
  • Guide
    • Visualizza Tutto
    • ProgrammazioneGuide di programmazione
  • Recensioni
    • Visualizza TuttoCategoria relativa alle recesioni dedicate a smartphone, tablet, pc e dispositivi legati al mondo della Tecnologia.
  • Applicazioni
    • Visualizza tutto
  • Giochi
    • Visualizza Tutto
  • Guide e tutorial per Android
  • Programmazione

Programmazione Avanzata: Lezione 4 – AsynchTask

Redazione 24/05/2014

In quePA 4sta lezione parleremo dell’importanza degli AsynchTask in Android e vedremo come implementarne uno.

[divider]

Perchè usare un AsynchTask

A volte sviluppando un’app per Android abbiamo bisogno di compiere operazioni molto pesanti o la cui durata è difficilmente prevedibile. Facciamo l’esempio di dover scaricare un’immagine dalla rete e renderla visibile all’utente, questa azione può essere compiuta in qualche attimo o in diversi secondi a seconda del dispositivo, connessione, grandezza del file, ecc… Altro caso simile potrebbe essere l’ottenimento delle coordinate tramite GPS. Queste azioni “impallano” l’interfaccia utente, e andrebbero svolte sempre in background. Android ci viene in aiuto fornendoci la classe AsynchTask.

[divider]

Implementazione di un AsynchTask

Creiamo un nuovo progetto su Eclipse, chiamandolo “Esempio AsynchTask”. La nostra interfaccia sarà semplice e conterrà solo un button Start per far partire il task in background:

layout

Passiamo alla parte Java. Definiamo un nuovo AsynchTask direttamente dentro la nostra classe principale, ed implementiamo 2 suoi metodi ( doInBackground() e onPostExecute() ):

	public class MyTask extends AsyncTask<Void, Void, Void> {

		@Override
		protected Void doInBackground(Void... params) {
			//Ci "addormentiamo" per un tempo scelto a random
			Random r = new Random();
			int intervallo = r.nextInt(10)+1;//da 1 a 10
			try {
				//Dormiamo da 1 a 10 secondi
				Thread.sleep(intervallo*1000);
			} catch (InterruptedException e) {
				//Eseguiremo questo codice se il processo viene interrotto brutalmente
				e.printStackTrace();
			}
			return null;
		}

		@Override
		protected void onPostExecute(Void result) {
			progressdialog.cancel();
			super.onPostExecute(result);
			return;
		}

	}

Analizziamo il codice: Una volta lanciato il nostro task eseguirà il codice del metodo “doInBackground()”. Per simulare un processo che impiega un tempo indeterminato per essere eseguito utilizziamo la classe Random di Java (l’abbiamo già vista in questa lezione). Thread.sleep() ci permette di aspettare un tempo definito prima di continuare l’esecuzione. Il try-catch è un costrutto del Java per gestire eventuali crash anomali dovuti al metodo sleep, non fateci troppo caso. Da notare invece il codice del metodo “onPostExecute()” che verrà eseguito dopo l’esecuzione in background. Nel nostro caso questo semplicemente farà scomparire la dialog di attesa (che definiremo nella onCreate()).

Il codice completo della classe ActivityMain è il seguente:

package com.example.esempioasynchtask;

import java.util.Random;

import android.app.Activity;
import android.app.ProgressDialog;
import android.os.AsyncTask;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;

public class MainActivity extends Activity {

	Button b;
	ProgressDialog progressdialog;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		b = (Button) findViewById(R.id.button1);
		b.setOnClickListener(new OnClickListener(){

			@Override
			public void onClick(View v) {
				progressdialog = ProgressDialog.show(MainActivity.this,"Esecuzione","Attendere Prego");
				progressdialog.show();
				MyTask t = new MyTask();
				t.execute();
			}

		});

	}

	public class MyTask extends AsyncTask<Void, Void, Void> {

		@Override
		protected Void doInBackground(Void... params) {
			//Ci "addormentiamo" per un tempo scelto a random
			Random r = new Random();
			int intervallo = r.nextInt(10)+1;//da 1 a 10
			try {
				//Dormiamo da 1 a 10 secondi
				Thread.sleep(intervallo*1000);
			} catch (InterruptedException e) {
				//Eseguiremo questo codice se il processo viene interrotto brutalmente
				e.printStackTrace();
			}
			return null;
		}

		@Override
		protected void onPostExecute(Void result) {
			progressdialog.cancel();
			super.onPostExecute(result);
			return;
		}

	}

}

Al click sul tasto Start visualizzeremo un messaggio di attesa (che faremo scomparire alla fine dell’esecuzione) e faremo partire il task (t.execute()).

Vi lasciamo anche il link per scaricare il progetto completo da qui.

Per le altre lezioni visualizza l’indice del corso di programmazione avanzata.

Continue Reading

Previous: Ripristino Samsung Galaxy Note 8.0: installare il Firmware originale Italiano
Next: Modding Samsung Galaxy Note 8.0: permessi di Root e Recovery modificata

Articoli Correlati

Come disattivare il GPS dello smartphone Come funziona il GPS
  • Guide e tutorial per Android
  • News su Android, tutte le novità
  • Sticky

Come disattivare il GPS dello smartphone

12/09/2023
Top 5 motivi per cui Cammus C5 è migliore della concorrenza Top 5 motivi per acquistare Cammus C5
  • Guide e tutorial per Android
  • News su Android, tutte le novità

Top 5 motivi per cui Cammus C5 è migliore della concorrenza

11/09/2023
Come personalizzare il setup di Cammus C5 Come personalizzare il setup di Cammus C5
  • Guide e tutorial per Android
  • News su Android, tutte le novità

Come personalizzare il setup di Cammus C5

01/09/2023

Ultime News

Questo è il Google Pixel 8a Google Pixel 8a leaked
  • News su Android, tutte le novità
  • Smartphone Android

Questo è il Google Pixel 8a

Redazione 25/09/2023
Nel tipico stile di Google, il Pixel 8a, il cui lancio è previsto per il 2024, è...
Leggi tutto
Spotify Supremium con qualità Hi-Fi, ormai ci siamo quasi Spotify Supremium

Spotify Supremium con qualità Hi-Fi, ormai ci siamo quasi

25/09/2023
Google rende disponibile lo “Studio Bot AI” in 170 paesi ma non ancora in UE Google Studio Bot IA

Google rende disponibile lo “Studio Bot AI” in 170 paesi ma non ancora in UE

24/09/2023
Google e messaggi RCS: nuova frecciatina ad Apple sul mancato supporto Google pubblicità sarcastica Apple no RCS

Google e messaggi RCS: nuova frecciatina ad Apple sul mancato supporto

24/09/2023
Signal aggiorna il suo protocollo crittografico per metterlo al riparo dai computer quantistici Signal SMS

Signal aggiorna il suo protocollo crittografico per metterlo al riparo dai computer quantistici

23/09/2023
Copyright © Tutti i diritti riservati | MoreNews by AF themes.
×

Questo sito utilizza i cookie, anche di terze parti, per garantirvi una esperienza di utilizzo ottimale.
Si rinvia all'informativa estesa per ulteriori informazioni. La prosecuzione nella navigazione (click, scroll, ...) comporta l'accettazione dei cookie.

 

Ok