Tengo cierto lío con la clase AsyncTask. Me explico, quiero ejecutar un método que me devuelve la latitud y la longtud con AsyncTask. El método funciona bien, es el siguiente:
public void activarGPS(), y la clase AsynTask que tengo y me da error es:
public class GPSLocation extends AsyncTask<Void, Integer, Void> {
ProgressDialog progressDialog;
@Override
protected Void doInBackground (Void... params){
activarGPS();
return null;
}
@Override
protected void onPreExecute()
{
progressDialog = new ProgressDialog(AndroidGPSTrackingActivity.this);
progressDialog.setCancelable(true);
progressDialog.setMessage("Buscando localización GPS...");
………
protected void onProgressUpdate(Integer... progress) {
setProgress(progress[0]);
}
@Override
protected void onPostExecute(Void result)
{
progressDialog.cancel();
longi.setText(longitud);
lati.setText(latitud);
}
Por lo que he entendido en AsyncTask<Void, Integer, Void>, el primer Void corresponde a:
protected Void doInBackground (Void... params){
y es Void porque no recibe ningún parámetro para ejecutar el método: activarGPS(); lo primero que no entiendo es porqué hay que poner Void doInBackground cuando ya le hemos dicho que es de tipo Void, y segundo porque añadimos Void... params cuando no recibe parámetros.
El segundo, Integer corresponde a AsyncTask<Void, Integer, Void>.
Y el tercero, Void, como en el primer caso no recibe parámetros, cierra el Dialog, recibe la latitud y la longitud y las pone en un TextView.
Cuando ejecuto la aplicación me da error, en el log es el siguiente:
Activity com.example.gpstracking.AndroidGPSTrackingActivity has leaked window com.android.internal.policy.impl.PhoneWindow$Decor View{4145c090 V.E..... R......D 0,0-513,144} that was originally added here
android.view.WindowLeaked: Activity com.example.gpstracking.AndroidGPSTrackingActivity has leaked window com.android.internal.policy.impl.PhoneWindow$Decor View{4145c090 V.E..... R......D 0,0-513,144} that was originally added here
at android.view.ViewRootImpl.<init>(ViewRootImpl.java :409)
at android.view.WindowManagerGlobal.addView(WindowMan agerGlobal.java:218)
at android.view.WindowManagerImpl.addView(WindowManag erImpl.java:69)
at android.app.Dialog.show(Dialog.java:281)
at com.example.gpstracking.AndroidGPSTrackingActivity $GPSLocation.onPreExecute(AndroidGPSTrackingActivi ty.java:73)
at android.os.AsyncTask.executeOnExecutor(AsyncTask.j ava:586)
at android.os.AsyncTask.execute(AsyncTask.java:534)
at com.example.gpstracking.AndroidGPSTrackingActivity .onCreate(AndroidGPSTrackingActivity.java:34)
………………..
Agradecería cualquier aporte que me pudiera dar algo de luz.