gpt4 book ai didi

android - 我如何从异步任务返回位图

转载 作者:行者123 更新时间:2023-11-29 21:56:29 25 4
gpt4 key购买 nike

我使用以下代码使用异步任务从互联网上获取图像,但是从该函数返回的 bitmp 始终为空。

private Bitmap asyncTaskFetchImage(final String imgeurl) {
// TODO Auto-generated method stub

new AsyncTask<Object, Object, Object>() {

@Override
protected void onPreExecute() {

progress_Dialog = ProgressDialog.show(this, "", "Loading");
}

@Override
protected Object doInBackground(Object... params) {
// TODO Auto-generated method stub
try
{
toSendBg=LoadImageFromURL(imgeurl);
System.gc();
return 0;
}
catch (Exception e) {
e.printStackTrace();
}
return 0;
}
@Override
protected void onPostExecute(Object result) {
if (progress_Dialog != null) {

progress_Dialog.dismiss();

}

}

}.execute();
return toSendBg;
}

这是从 Asyntask 返回值的确切方式吗?

最佳答案

尝试使用以下代码使用 AsyncTask 从 Web 下载图像并在 ImageView 中显示。

public class MainActivity extends Activity {

ImageView mImgView1;
static Bitmap bm;
ProgressDialog pd;
String imageUrl = "https://www.morroccomethod.com/components/com_virtuemart/shop_image/category/resized/Trial_Sizes_4e4ac3b0d3491_175x175.jpg";
BitmapFactory.Options bmOptions;

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

mImgView1 = (ImageView) findViewById(R.id.mImgView1);
pd = ProgressDialog.show(MainActivity.this, "Aguarde...",
"Carregando...");
new ImageDownload().execute("");
}

public class ImageDownload extends AsyncTask<String, Void, String> {

protected String doInBackground(String... params) {
// TODO Auto-generated method stub
bmOptions = new BitmapFactory.Options();
bmOptions.inSampleSize = 1;
loadBitmap(imageUrl, bmOptions);
return imageUrl;
}

protected void onPostExecute(String imageUrl) {
pd.dismiss();
if (!imageUrl.equals("")) {
mImgView1.setImageBitmap(bm);
} else {
Toast.makeText(MainActivity.this,
"Não foi possível obter resultados", Toast.LENGTH_LONG)
.show();
}
}

}

public static Bitmap loadBitmap(String URL, BitmapFactory.Options options) {
InputStream in = null;
try {
in = OpenHttpConnection(URL);
bm = BitmapFactory.decodeStream(in, null, options);
in.close();
} catch (IOException e1) {
}
return bm;
}

private static InputStream OpenHttpConnection(String strURL)
throws IOException {
InputStream inputStream = null;
URL url = new URL(strURL);
URLConnection conn = url.openConnection();

try {
HttpURLConnection httpConn = (HttpURLConnection) conn;
httpConn.setRequestMethod("GET");
httpConn.connect();

if (httpConn.getResponseCode() == HttpURLConnection.HTTP_OK) {
inputStream = httpConn.getInputStream();
}
} catch (Exception ex) {
}
return inputStream;
}
}

关于android - 我如何从异步任务返回位图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13097338/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com