J'utilise la méthode ci-dessous pour extraire et convertir du XML en JSON.Comment éviter l'affichage de la boîte de dialogue Application ne répondant pas
- D'abord, je passe une l'URL de l'appel api du xml, puis extraire les données et le mettre dans la chaîne.
- Ensuite, en utilisant ce Library, je convertir le fichier XML en JSON objet.
- Enfin, j'utilise les données d'objet json pour obtenir des données Web et remplir mes recyclerviews.
Il fonctionne bien, mais parfois, il me donne de dialogue ANR ..! de l'aide?
public static void getResponse(final String xmlLink, final Activity activity,
final GetJSONRespone getjson) {
Handler uiHandler = new Handler(Looper.getMainLooper());
uiHandler.post(new Runnable() {
@Override
public void run() {
URL url = null;
BufferedReader in = null;
try {
url = new URL(xmlLink);
in = new BufferedReader(
new InputStreamReader(
url.openStream(), "UTF-8"));
String inputLine;
System.setProperty("http.keepAlive", "false");
StringBuilder builder = new StringBuilder();
while ((inputLine = in.readLine()) != null) {
builder.append(inputLine);
}
String urlContent = builder.toString();
XmlToJson xmlToJson = new XmlToJson.Builder(urlContent).build();
JSONObject response = xmlToJson.toJson();
Log.i("response: ", response.toString());
getjson.getJSON(response);
} catch (IOException e) {
e.printStackTrace();
} finally {
if (in != null) {
try {
in.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
});
}
Utilisez une tâche asynchrone pour télécharger des données à partir de l'API ou utilisez une bibliothèque tierce comme volly et Retrofit. –
https://developer.android.com/training/articles/perf-anr.html#anr – Kuffs
Essayez d'utiliser Volley ou pour RetroFit réponse JSON, et de gérer l'ANR s'il vous plaît passer par ce -https: //developer.android.com /training/articles/perf-anr.html –