Android Servizio di esempio di esempio

Esempio

Ecco un esempio di IntentService che finge di caricare le immagini in background. Tutto ciò che devi fare per implementare un IntentService è quello di fornire un costruttore che chiama il costruttore super(String) e devi implementare il onHandleIntent(Intent) .

public class ImageLoaderIntentService extends IntentService {

    public static final String IMAGE_URL = "url";

    /**
     * Define a constructor and call the super(String) constructor, in order to name the worker
     * thread - this is important if you want to debug and know the name of the thread upon 
     * which this Service is operating its jobs.
     */
    public ImageLoaderIntentService() {
        super("Example");
    }

    @Override
    protected void onHandleIntent(Intent intent) {
        // This is where you do all your logic - this code is executed on a background thread

        String imageUrl = intent.getStringExtra(IMAGE_URL);

        if (!TextUtils.isEmpty(imageUrl)) {
            Drawable image = HttpUtils.loadImage(imageUrl); // HttpUtils is made-up for the example
        }

        // Send your drawable back to the UI now, so that you can use it - there are many ways
        // to achieve this, but they are out of reach for this example
    }
}

Per avviare un IntentService , devi inviare un Intent ad esso. Puoi farlo da Activity , per un esempio. Certo, non sei limitato a questo. Ecco un esempio di come invocare il nuovo Service da una classe di Activity .

Intent serviceIntent = new Intent(this, ImageLoaderIntentService.class); // you can use 'this' as the first parameter if your class is a Context (i.e. an Activity, another Service, etc.), otherwise, supply the context differently
serviceIntent.putExtra(IMAGE_URL, "http://www.example-site.org/some/path/to/an/image");
startService(serviceIntent); // if you are not using 'this' in the first line, you also have to put the call to the Context object before startService(Intent) here

IntentService elabora IntentService i dati dai propri Intent , in modo da poter inviare più Intent senza preoccuparsi che si scontrino tra loro. Solo un Intent alla volta viene elaborato, il resto va in coda. Quando tutti i lavori sono completi, IntentService si spegnerà automaticamente.