пропустил 147 кадров! Приложение может делать слишком много работы в своем основном потоке
Я понимаю смысл этой ошибки. Я нашел много похожих вопросов здесь на stackoverflow.com, и я попытался реализовать ответы, которые были предложены, но все же я получаю эту ошибку. Я пытаюсь использовать php web service. Я извлекаю данные с сервера базы данных mysql и пытаюсь отобразить их в виде списка с помощью AsyncTask следующим образом:
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;
}
Во многих ответах предлагалось, чтобы вся обработка выполнялась в функции doInBackground. Ниже приведен код для отображения этого массива в 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);
}
});
}
Пожалуйста, помогите, потому что прежде всего я новичок в Android, и я не имею ни малейшего понятия, как решить эту проблему. Пожалуйста, проверьте мой код и дайте мне знать проблему.