désolé pour mon anglais.La fuite de mémoire d'Android à cause de HttpClient
Je développe une application Android, consistant en différentes activités et un service qui est activé par l'activité "principale". Le service vérifie toutes les 3 secondes (cet intervalle est arbitraire) sur les connexions réseau actives dans le téléphone mobile. S'il y a une connexion à un PC à l'intérieur de mon réseau local, je fais un appel à un serveur web.
Le problème est, j'essaie d'atteindre PC hôte via cette fonction:
public boolean checkNet() {
HttpClient client;
HttpPost postMethod;
HttpParams httpParams;
URI uri;
try {
uri = new URI(Const.HOST_ADDRESS);
postMethod = new HttpPost(uri);
postMethod.addHeader("Content-Type", "text/xml");
httpParams = postMethod.getParams();
HttpConnectionParams.setSoTimeout(httpParams, 1000);
HttpConnectionParams.setSocketBufferSize(httpParams, 512);
HttpConnectionParams.setStaleCheckingEnabled(httpParams, false);
HttpConnectionParams.setConnectionTimeout(httpParams, 1000);
client = new DefaultHttpClient();
}
catch (URISyntaxException use) {}
try
{
client.execute(postMethod);
return true;
}
catch (ClientProtocolException cpe) {
}
catch (IOException e) {
}
return false;
}
-je utiliser cette méthode, au lieu de vérifier de WifiManager et méthodes Android internes, parce que j'ai une situation comme celle-ci: je peux être connecté à un AP à cryptage ouvert, mais il a un système de connexion (coova). Ici, je peux être associé (et avoir une adresse IP dans le LAN), mais si je ne suis pas connecté, je n'aurai accès à aucun réseau, donc je dois implémenter un "network-checking-wrapper". Donc, s'il y avait une exception dans la fonction d'exécution parce que mon PC hôte n'est pas joignable, DDMS montrera comment la taille du tas et la taille de l'allocation augmenteront sans contrôle. Je pense qu'il est à cause des sous-appels à l'intérieur « exécuter » ne fermez pas correctement les références obsolètes ... par exemple, voici un exemple de suivi de l'allocation:
java.lang.AbstractStringBuilder enlargeBuffer AbstractStringBuilder.java 99 false
java.lang.AbstractStringBuilder append0 AbstractStringBuilder.java 170 false
java.lang.StringBuilder append StringBuilder.java 224 false
org.apache.http.conn.HttpHostConnectException <init> HttpHostConnectException.java 48 false
org.apache.http.impl.conn.DefaultClientConnectionOperator openConnection DefaultClientConnectionOperator.java 133 false
org.apache.http.impl.conn.AbstractPoolEntry open AbstractPoolEntry.java 164 false
org.apache.http.impl.conn.AbstractPooledConnAdapter open AbstractPooledConnAdapter.java 119 false
org.apache.http.impl.client.DefaultRequestDirector execute DefaultRequestDirector.java 348 false
Merci à l'avance.
Hola Pacorro, Const.HOST_ADDRESS est un fichier téléchargeable ou tout simplement une page web? et avez-vous les dernières versions android sdk et eclipse? – Jorgesys