我有以下异步任务,它应该只从给定的 URL 加载图像。图像确实存在,我可以访问它们
private class FetchVehicleImage extends AsyncTask<String, Integer, Bitmap>
{
private ProgressBar mSpinner;
private ImageView mImage;
private String imagesBaseUrl = "http://mywebsite.net/images/";
private URL url = null;
@Override
protected void onPreExecute()
{
mImage = (ImageView) findViewById(R.id.vehicle_image);
mSpinner = (ProgressBar) findViewById(R.id.vehicle_image_progress_bar);
mSpinner.setIndeterminate(true);
mSpinner.setVisibility(View.VISIBLE);
mImage.setVisibility(View.GONE);
}
@Override
protected Bitmap doInBackground(String... strings)
{
Bitmap bm = null;
try
{
url = new URL(imagesBaseUrl + strings[0]);
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setDoInput(true);
conn.connect();
InputStream is = conn.getInputStream();
bm = BitmapFactory.decodeStream(is);
}
catch (Exception e)
{
e.printStackTrace();
}
return bm;
}
protected void onPostExecute(final Bitmap result)
{
if (result != null)
{
mImage.setImageBitmap(result);
}
mImage.setVisibility(View.VISIBLE);
mSpinner.setVisibility(View.GONE);
}
}
我从未在 中看到异常doInBackground
,但有时bm
返回为 null,但它非常断断续续。我有 4 张图像,其中 3 张每次加载都非常好,但只有在我在bm
作业中遇到断点时才会加载一张,据说给了它足够的时间来完成它的工作?
我认为这doInBackground
应该在后台线程上运行,因此我应该总是获取图像,或者获取异常?