Cómo usar AsyncTask correctamente en Android [cerrado]

Resuelto omerjerk asked hace 54 años • 4 respuestas

No quiero pasar ningún argumento al doInBackgroundmétodo de AsyncTask.

Entonces, ¿cómo debería ser el código?

omerjerk avatar Jan 01 '70 08:01 omerjerk
Aceptado
import android.app.Activity;
import android.app.ProgressDialog;
import android.os.AsyncTask;
import android.os.Bundle;

public class AsyncExample extends Activity{


private String url="http://www.google.co.in";

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
}


@Override
protected void onResume() {
    // TODO Auto-generated method stub
    super.onResume();

    new AsyncCaller().execute();

}

private class AsyncCaller extends AsyncTask<Void, Void, Void>
{
    ProgressDialog pdLoading = new ProgressDialog(AsyncExample.this);

    @Override
    protected void onPreExecute() {
        super.onPreExecute();

        //this method will be running on UI thread
        pdLoading.setMessage("\tLoading...");
        pdLoading.show();
    }
    @Override
    protected Void doInBackground(Void... params) {

        //this method will be running on background thread so don't update UI frome here
        //do your long running http tasks here,you dont want to pass argument and u can access the parent class' variable url over here


        return null;
    }

    @Override
    protected void onPostExecute(Void result) {
        super.onPostExecute(result);

        //this method will be running on UI thread

        pdLoading.dismiss();
    }

    }
}
Mehul Joisar avatar Jan 10 '2013 05:01 Mehul Joisar

Según AsyncTask , su

 AsyncTask<Params, Progress, Result>
  • Parámetros, el tipo de parámetros enviados a la tarea durante la ejecución.
  • Progreso, el tipo de unidades de progreso publicadas durante el cálculo en segundo plano.
  • Resultado, el tipo de resultado del cálculo en segundo plano.

Entonces, si desea pasar void en doInBackground, simplemente pase void en lugar de Params.

Código de ejemplo:

class DownloadLink extends AsyncTask<Void, Void, Void> {


        @Override
        protected Void doInBackground(Void... params) {
            // TODO Auto-generated method stub

            //Do Your stuff here..
            return null;
        }
    }

Y llámalo como:

 new DownloadLink().execute();
Name is Nilay avatar Jan 10 '2013 05:01 Name is Nilay