sauté 147 images! La demande peut-être trop de travail sur son thread principal
Je comprends le sens de cette erreur. J'ai trouvé beaucoup de questions similaires ici à stackoverflow.com et j'ai essayé de mettre en œuvre les réponses de ceux qui ont été proposées mais encore, je reçois cette erreur. Ce que j'essaie de faire est d'utiliser php web service, je suis en extrayant les données de mysql serveur de base de données et d'essayer de l'afficher dans la vue liste à l'aide de AsyncTask comme suit:
class LoadAllProducts extends AsyncTask<String, String, ArrayList<HashMap<String, String>>>
{
ArrayList<HashMap<String, String>> mylist = new ArrayList<HashMap<String, String>>();
protected ArrayList<HashMap<String, String>> doInBackground(String... args)
{
List<NameValuePair> params = new ArrayList<NameValuePair>();
JSONObject json = jParser.makeHttpRequest(url_all_products, "GET", params);
Log.d("All Products: ", json.toString());
try {
JSONArray files = json.getJSONArray(TAG_FILES);
for(int i=0;i<files.length();i++)
{
HashMap<String, String> map = new HashMap<String, String>();
JSONObject e = files.getJSONObject(i);
String file_name = e.getString(TAG_FILE_NAME);
String sender = e.getString(TAG_SENDER);
String subject = e.getString(TAG_SUBJECT);
map.put(TAG_SENDER, sender);
map.put(TAG_SUBJECT, subject);
mylist.add(map);
}
} catch (JSONException e)
{
e.printStackTrace();
Log.e("log_tag", "Error parsing data "+e.toString());
}
return mylist;
}
Ce qui a été suggéré dans de nombreuses réponses que tout le traitement doit être fait dans doInBackground fonction. Maintenant ci-dessous est le code pour afficher cette liste de tableaux dans ListView
protected void onPostExecute(String file_url)
{
pDialog.dismiss();
runOnUiThread(new Runnable()
{
public void run()
{
String[] from = { TAG_SENDER, TAG_SUBJECT };
int[] to = { android.R.id.text1, android.R.id.text2 };
ListAdapter adapter = new SimpleAdapter(AllProductsActivity.this, mylist,
android.R.layout.simple_list_item_2, from , to);
setListAdapter(adapter);
}
});
}
S'il vous plaît Aider la cause première de tout, je suis un débutant de android et je n'ai pas la moindre idée de comment résoudre ce problème . Veuillez vérifier mon code et laissez-moi savoir le problème.
OriginalL'auteur Subodh Mankar | 2014-02-02
Vous devez vous connecter pour publier un commentaire.
Ce type d'erreur se produira si votre thread principal de faire autant de travail. Fondamentalement, ignorer des cadres va se passer le maximum de temps lorsque nous de tester notre application dans l'émulateur, car il est déjà lent et incapable de gérer vaste opération comme un périphérique.
J'ai vu un simple problème dans votre code. Nous savons onPostExecute() s'exécute sur MainThread, Mais encore vous utilisez
runOnUiThread(new Runnable()
dans onPostExecute() .Vous doinbackground méthode renvoie une liste de tableaux , mais votre onpostexecute contenir une chaîne..
Changer aussi mon onPostExecute' paramètre qui est l'ArrayList(maliste)que vous utilisez dans votre carte.
MODIFIER
vérifier mon montage de réponse.
aucun ne fonctionne pas toujours la même erreur
Oui Absolument parfait. travaillant maintenant Merci beaucoup mate.
heureux de vous aider...
OriginalL'auteur Ranjit
Je suis désolé, ce n'est pas un super informé de réponse, mais j'ai 2 suggestions. Tout d'abord, éliminer les
runOnUiThread
appeler, parce queonPostExecute
fonctionne déjà sur le thread d'interface utilisateur (c'est le point de la méthode). Qui ne va pas aider avec n'importe quelle image de sauter, mais au moins, vous pouvez vous débarrasser de certains inutiles code.Ensuite, créez le
ListAdapter
dansdoInBackground
. Je doute qu'il va faire beaucoup de différence, mais vous pourriez aussi bien obtenir autant de désactiver le thread d'INTERFACE utilisateur que possible. Ainsi, au lieu deAsyncTask<String, String, ArrayList<HashMap<String, String>>>
vous allez utiliserAsyncTask<String, String, ListAdapter>
. Cela ne laisse que 2 appels de méthode dansonPostExecute
,pDialog.dismiss
etsetListAdapter
. Vous ne pouvez pas obtenir la plus efficace que cela. S'il les ignore, je voudrais blâmer le débogueur et de progresser.OriginalL'auteur Eric Simonton