У меня есть отдельный класс (а не Activity) для управления изображением с его свойствами.onPostExecute не работает
В этом классе (Image.class) я также создал AsynkTask для загрузки растрового изображения из Интернета. Все работает отлично, за исключением того факта, что AsyncTask продолжает работать, без запуска метода onPostExecute().
Может кто-нибудь мне помочь, пожалуйста?
Я создаю экземпляр этого класса в Основной деятельности, внутри цикла.
public class InstaImage {
public URL thumbUrl;
public URL lowresUrl;
public URL standardresUrl;
private URL url;
private Bitmap bmp;
public InstaImage(URL _thumb, URL _low, URL _standard) {
this.thumbUrl = _thumb;
this.lowresUrl = _low;
this.standardresUrl = _standard;
}
public Bitmap getBitmap(String resolution) {
switch(resolution) {
case "thumb":
url = thumbUrl;
break;
case "low":
url = lowresUrl;
break;
case "standard":
url = standardresUrl;
break;
}
DownloadImageTask dit = new DownloadImageTask();
dit.execute();
// --- TEST ASYNC STATUS ---
while(dit != null) {
if(dit.getStatus() == AsyncTask.Status.FINISHED) {
Log.i("ASYNC", "END2!!");
break;
}
else {
Log.w("ASYNC WAITING", dit.getStatus().toString());
}
}
// --- END TEST ASYNC STATUS ---
return bmp;
}
private class DownloadImageTask extends AsyncTask<String, Void, Bitmap> {
URLConnection conn = null;
InputStream in = null;
Bitmap _bmp = null;
@Override
protected Bitmap doInBackground(String... urls) {
Log.i("ASYNC","STARTING!!");
try {
conn = url.openConnection();
if (conn != null) {
in = conn.getInputStream();
_bmp = BitmapFactory.decodeStream(in);
in.close();
}
}
catch (IOException e) {
e.printStackTrace();
}
Log.i("ASYNC","END0!!");
return _bmp;
}
protected void onPostExecute(Bitmap result) {
super.onPostExecute(result);
Log.i("ASYNC","END1!!");
bmp = result;
}
}
}
'while (dit! = Null)' - как бы 'dit' когда-нибудь стать нулевым? – stkent
a от силы _true_ аргумент, чтобы код работал .. @michele, вы получаете исключение пойманное? – Elltz
это ** очень ** неясный. Просто напишите 'while (true)' – Andy