Этот код работал, когда я имел его в потоке пользовательского интерфейса, но хотел переместить его в класс AsyncTask. Я только что закончил читать, как это сделать, но когда я запускаю приложение, оно теперь падает, когда оно начинает читать класс.
Класс вызывает и анализирует файлы XML перед загрузкой его в список. Это мое первое приложение для Android, поэтому любая помощь, которую вы можете предоставить, оценена.
Спасибо
public class DownloadXml extends AsyncTask<String, Void, String>
{
private ProgressDialog pd;
protected String doInBackground(String... platform)
{
pd = ProgressDialog.show(CategoryData.this, "Please Wait...", "Loading games");
try
{
BaseFeedParser parser = new BaseFeedParser();
messages = parser.parse();
}
catch (Throwable t)
{
Log.e("RetailApp",t.getMessage(),t);
}
return rowPlatform;
}
protected void onPostExecute(String rowPlatform)
{
productList = new ArrayList<HashMap<String, Object>>();
for (Message msg : messages)
{
if(msg.getPlatform().compareTo(rowPlatform) == 0 )
{
HashMap<String, Object> map = new HashMap<String, Object>();
map.put("Title", msg.getTitle());
map.put("Brand", msg.getBrand());
map.put("Price", "$" + msg.getPrice());
try
{
String picture[] = msg.getImage().split("-large.jpg");
URL pictureURL = new URL(picture[0] + "-medium.jpg");
Bitmap bitmap = BitmapFactory.decodeStream(pictureURL.openStream());
map.put("Img",bitmap);
}
catch (Throwable t)
{
Log.e("RetailApp",t.getMessage(),t);
}
productList.add(map);
}
}
Редактировать : Я переместил цикл for в onPostExecute, и это, кажется, улучшает код, но я все еще получаю ошибку «незарегистрированный дескриптор все еще заблокирован». Есть идеи?
Спасибо за идею, Роб, но не повезло, удалили цикл и Toast из фона ... новый код выше. Я получаю сообщение об ошибке «Обработчик Uncaught: поток AsycTask # 1 выходит из-за необработанного исключения»