Propriété de Albiri Sigue
customer 27921 at Fri Mar 11 19:19:45 +0100 2011
308 L’art du développement Android
String url=String.format(format, loc.getLatitude(),
loc.getLongitude());
HttpGet getMethod=new HttpGet(url);
try {
ResponseHandler responseHandler=new BasicResponseHandler();
String responseBody=client.execute(getMethod, responseHandler);
String page=generatePage(buildForecasts(responseBody));
synchronized(this) {
forecast=page;
}
sendBroadcast(broadcast);
}
catch (Throwable t) {
android.util.Log.e("WeatherPlus",
"Exception dans updateForecast()", t);
}
return(null);
}
@Override
protected void onProgressUpdate(Void... inutilisé) {
// Inutile ici
}
@Override
protected void onPostExecute(Void inutilisé) {
// Inutile ici
}
}
L’essentiel de ce code ressemble au code du projet Weather original – il effectue la
requête HTTP, convertit sa réponse en un ensemble d’objets Forecast qu’il transforme
ensuite en page web. La première différence, outre l’introduction d’AsyncTask, est que la
page web est simplement mise en cache dans le service car celui-ci ne peut pas directement la placer dans le WebView de l’activité. La seconde est que l’on appelle sendBroadcast(), qui prend une intention en paramètre et l’envoie à toutes les parties concernées.
Cette intention a été déclarée dans le prologue de la classe :
private Intent broadcast=new Intent(BROADCAST_ACTION);
Ici, BROADCAST_ACTION est simplement une chaîne statique dont la valeur distingue cette
intention de toutes les autres :
public static final String BROADCAST_ACTION=
"com.commonsware.android.service.ForecastUpdateEvent";
"com.commonsware.android.service.ForecastUpdateEvent";
Livre Android.book Page 308 Dimanche, 8. novembre 2009 12:23 12
Précédent

- 323/391

Suivant