0
下面是我的异步类异步返回null即使使用AsyncTask.Status.FINISHED
public class GetBitMapFromURL extends AsyncTask<String, Integer, String>
{
byte[] tempByte;
private Bitmap bmap;
@Override
protected String doInBackground(String... params)
{
// TODO Auto-generated method stub
String stringUrl = params[0];
//bmap = null;
try
{
URL url = new URL(stringUrl);
InputStream is = (InputStream) url.getContent();
byte[] buffer = new byte[8192];
int bytesRead;
ByteArrayOutputStream output = new ByteArrayOutputStream();
while ((bytesRead = is.read(buffer)) != -1)
{
output.write(buffer, 0, bytesRead);
}
tempByte = output.toByteArray();
}
catch (MalformedURLException e)
{
e.printStackTrace();
}
catch (IOException e)
{
e.printStackTrace();
}
return "Success";
}
@Override
protected void onPostExecute(String result)
{
super.onPostExecute(result);
Bitmap tempBitMap = BitmapFactory.decodeByteArray(tempByte, 0, tempByte.length);
//Log.d("Bitmap bmap value on PostExecute", "bmap="+bmap);
setBitMap(tempBitMap);
//imageView.setImageBitmap(bImg);
}
void setBitMap(Bitmap bitMapSet)
{
this.bmap = bitMapSet;
//Log.d("Bitmap bmap value", "bmap="+bmap);
}
Bitmap returnBitmap()
{
//Log.d("Bitmap bmap value", "bmap="+bmap);
return bmap;
}
}
尽管做以下我的活动中,returnBitMap()返回null。
GetBitMapFromURL gbmap1 = new GetBitMapFromURL(); //Obtain medium bitmap
gbmap1.execute(applicationImageMediumURL);
if(gbmap1.getStatus() == AsyncTask.Status.FINISHED)
{
applicationMediumBitMap = gbmap1.returnBitmap();
}
向我建议我哪里出错了。
你调试过吗? *状态是否已完成? –
@JonSkeet是这样做的 –
你有这样的循环或什么? if语句只会被执行一次......如果你使用调试器,你应该知道null被分配到的行。 – Joel