gpt4 book ai didi

android - 如何检查下载图片的过程是否完成?

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

在我的应用程序中,系统将从 url 下载图像并将其保存到手机内存中。 (我没有在问题中包含 url 地址) 除此之外,它还会将数据保存到 sqlite 数据库中。保存的数据是文件名、文件路径和文件大小。但是目前一旦我完成下载过程,无论下载完成还是在过程中失败,它也会插入到数据库中。
有什么方法可以检查下载过程是否完成?

        GalleryScreen.this.runOnUiThread(new Runnable() {
@Override
public void run() {
boolean isDownloadResult = false;


int NumIncrease = 0;
Log.i(TAG, "NumberIncrease:" +NumIncrease);
Toast.makeText(getApplicationContext(), "Downloading.............>>>>>>>>>>>", Toast.LENGTH_SHORT).show();
Bitmap bm;
InputStream in;



try{


in = new java.net.URL(URL).openStream();
bm = BitmapFactory.decodeStream(new PatchInputStream(in));

File storage = new File(Environment.getExternalStorageDirectory() + File.separator + "/Images/");
Log.i(TAG,"storage:" +storage);
Log.i(TAG,"storage:" +storage.getAbsolutePath());
if(!storage.exists()){
storage.mkdirs();


}

String FileName = "/"+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);
helper.insert_content(filepath, fileSize, requestTime);


isDownload = false;
}
catch(IOException e1){
e1.printStackTrace();
}
}

});

最佳答案

请使用 AsyncTask。 AsyncTask 可以正确且轻松地使用 UI 线程。此类允许执行后台操作并在 UI 线程上发布结果,而无需操作线程和/或处理程序。

AsyncTask 被设计成一个围绕 Thread 和 Handler 的辅助类,并不构成一个通用的线程框架。 AsyncTasks 应该理想地用于短期操作(最多几秒钟。)

您可以只为异步任务使用匿名类。这会像这样:

ImageView mChart = (ImageView) findViewById(R.id.imageview);
String URL = "http://www...anything ...";

mChart.setTag(URL);
new DownloadImageTask.execute(mChart);

任务类:

public class DownloadImagesTask extends AsyncTask<ImageView, Void, Bitmap> {

ImageView imageView = null;

@Override
protected Bitmap doInBackground(ImageView... imageViews) {
this.imageView = imageViews[0];
return download_Image((String)imageView.getTag());
}

@Override
protected void onPostExecute(Bitmap result) {
imageView.setImageBitmap(result);
}


private Bitmap download_Image(String url) {
...
}

在这里,onPostExecute,您可以轻松检查下载图片的过程是否完成。

进一步阅读

编辑:

关于android - 如何检查下载图片的过程是否完成?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13965294/

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