web-dev-qa-db-fra.com

Appel non vérifié à 'exécuter (Params ...)' en tant que membre du type brut 'Android.os.AsyncTask'

Je suis le tutoriel de Google Android sur Udacity, mais dans le code spécifié, je reçois l'avertissement suivant:

Appel non vérifié à 'exécuter (Params ...)' en tant que membre du type brut 'Android.os.AsyncTask'

sur ce code:

DoSomethingTask myTask = new DoSomethingTask();
myTask.execute(); // Warning here

Faire quelque chose:

public class DoSomethingTask extends AsyncTask {

    protected Object doInBackground(Object[] params) {
        ...
    }
}

Quelqu'un peut-il expliquer cet avertissement et comment y remédier? Il semble que cela devrait fonctionner selon les instructions ...

21
doovers

L'avertissement est provoqué par les paramètres de la tâche. Essayez d'utiliser:

extends AsyncTask<Void, Void, Void>{
    protected Object doInBackground() {
    }
}

ou utiliser:

extends AsyncTask<Object, Void, Void>{
    protected Object doInBackground(Object[] params) {
    }
}
myTask.execute(anyObject);

Explication:

This document explique la signification des trois types pour AsyncTask.

  1. Params, le type des paramètres envoyés à la tâche lors de son exécution.

  2. Progress, le type des unités de progression publiées lors du calcul en arrière-plan.

  3. Résultat, le type du résultat du calcul en arrière-plan.
27
Surely

changement 

AsyncTask asyncTask = new AsyncTask<Object, Void, String>() {

        @Override
        protected String doInBackground(Object... params) {
            return "";
        }
    };

    asyncTask.execute();

à 

AsyncTask<Object, Void, String> asyncTask = new AsyncTask<Object, Void, String>() {

        @Override
        protected String doInBackground(Object... params) {
            return "";
        }
    };

    asyncTask.execute();

La référence AsyncTask doit être identique à la classe AsyncTask, et IDE ne préviendra pas。

0
burulangtu