android图片资源操作,android – 使用AsyncTask下载图像

我不确定我的代码或结构出了什么问题.我想使用AsyncTask下载图像并同时显示进度条.但我尝试了一些不同的方法.它仍然失败,不知道它有什么问题.我的结构流程是

ContentID是一个字符串数组,用于存储图像的内容ID.

主要问题:它设法从网址下载图像并存储到手机中,但下载的图像都是相同的图像.应该是不同的图像,这不是我的预期.

次要问题:应用程序下载图像时会弹出进度条,但进度条没有更新它的进度.它只是保持0%,并在下载完成后被解雇.

我想知道是什么原因导致了我提到的主要问题和第二问题.如果您可能知道我的代码有什么问题,请发表评论或回答.任何帮助将不胜感激.

if(isSyncSuccess){

SetConstant.IMAGE_EXIST = 1;

pDialog = new ProgressDialog(GalleryScreen.this);

pDialog.setMessage("Downloading file. Please wait...");

pDialog.setIndeterminate(false);

pDialog.setProgress(0);

pDialog.setMax(contentId.length);

pDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);

pDialog.setCancelable(true);

if (contentId.length>0){

Log.i(TAG, "contentid.length:" +contentId.length);

for (int i=0;i

if(helper.databaseChecking(useremail, contentId[i])){

contentdownload = i;

SetConstant.CONTENT_ID = contentId[i];

String URL = SetConstant.URL_DOWNLOAD_CONTENT+contentId[i];

DownloadFile downloadFile = new DownloadFile();

downloadFile.execute(URL);

}

private class DownloadFile extends AsyncTask{

@Override

protected String doInBackground(String... sUrl){

Bitmap bm;

InputStream in;

try{

in = new java.net.URL(sUrl[0]).openStream();

bm = BitmapFactory.decodeStream(new PatchInputStream(in));

File storage = new File(Environment.getExternalStorageDirectory() + File.separator + "/Image/");

Log.i(TAG,"storage:" +storage);

Log.i(TAG,"storage:" +storage.getAbsolutePath());

if(!storage.exists()){

storage.mkdirs();

}

String FileName = "/"+SetConstant.CONTENT_ID+".jpg";

FileOutputStream fos = new FileOutputStream(storage + FileName);

bm.compress(Bitmap.CompressFormat.JPEG, 85, fos);

String filepath = storage + FileName;

File filecheck = new File (filepath);

long fileSize = filecheck.length();

fos.flush();

fos.close();

Log.i(TAG, "bm:" +bm);

Log.i(TAG, "fos:" +fos);

Log.i(TAG, "filesize:" +fileSize);

Log.i(TAG, "filepath:" +filepath);

}

catch(IOException e1){

e1.printStackTrace();

}

return null;

}

@Override

protected void onPreExecute(){

super.onPreExecute();

pDialog.show();

}

@Override

protected void onProgressUpdate(Integer... progress){

super.onProgressUpdate(progress);

pDialog.setProgress(progress[0]);

}

protected void onPostExecute(String result){

super.onPostExecute(result);

pDialog.dismiss();

}

}

编辑

现在应用程序能够下载图像和进度条也正常工作!但我得到的另一个问题是当应用程序无法完成下载时如何返回错误消息.目前,当应用程序无法下载时,它将崩溃.我相信我不应该在doInBackground端运行它.但我还能在哪里进行检查?知道如何作为错误消息返回并请求用户重试而不是崩溃应用程序?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值