private class ExecuteLocations extends AsyncTask<String, Void, Void>{
private final ProgressDialog dialog = new ProgressDialog(ListProfiles.this);
protected void onPreExecute() {
//this.dialog.setMessage("Starting pre-execute...");
//this.dialog.show();
}
@Override
protected Void doInBackground(String... arg0) {
check_profiles_lm=(LocationManager) ListProfiles.this.getSystemService(LOCATION_SERVICE);
myLocListen = new LocationListener(){
@Override
public void onLocationChanged(Location location) {
HashMap params = new HashMap();
params.put("lat", Double.toString(location.getLatitude()));
params.put("long", Double.toString(location.getLongitude()));
postData("http://mydomain.com",params);
}
@Override
public void onStatusChanged(String provider, int status,Bundle extras) {
}
@Override
public void onProviderDisabled(String provider) {
}
@Override
public void onProviderEnabled(String provider) {
}
};
check_profiles_lm.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 30000, 0, myLocListen);
return null;
}
protected void onPostExecute(final Void unused) {
if (this.dialog.isShowing()) {
//this.dialog.dismiss();
}
//Do something else here
}
}
Au fond, mon objectif est:J'ai une activité. Dans cette activité, j'exécuta un AsyncTask, mais il ne fonctionne pas
- publier en permanence la latitude/longitude sur mon site toutes les minutes.
- Bien sûr, je veux le faire dans un autre thread, afin qu'il ne gâche pas mon thread d'interface utilisateur. Cette asyncTask est supposée résoudre ça ... mais ça fait une erreur et je ne sais pas pourquoi.
Que pouvez-vous faire pour atteindre mon objectif? C'est très simple ... il suffit de numériser l'emplacement et de publier sur le Web chaque minute, en arrière-plan. A propos, ma méthode onCreate est comme ça. C'est essentiellement ça.
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
new ExecuteLocations().execute();
setContentView(R.layout.main_list);
}