Android 如何检查图像下载过程是否完成?
在我的应用程序中,系统将从url下载图像并将其保存到手机存储器中。(我没有在问题中包括url地址)除此之外,它还将数据保存到sqlite数据库中。保存的数据是文件名、文件路径和文件大小。但目前,我通过下载过程,不管下载完成或失败的中间过程,它也将插入到数据库。 有什么方法可以检查下载过程是否完成Android 如何检查图像下载过程是否完成?,android,download,save,store,Android,Download,Save,Store,在我的应用程序中,系统将从url下载图像并将其保存到手机存储器中。(我没有在问题中包括url地址)除此之外,它还将数据保存到sqlite数据库中。保存的数据是文件名、文件路径和文件大小。但目前,我通过下载过程,不管下载完成或失败的中间过程,它也将插入到数据库。 有什么方法可以检查下载过程是否完成 GalleryScreen.this.runOnUiThread(new Runnable() { @Override public vo
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允许正确且轻松地使用UI线程。此类允许在UI线程上执行后台操作和发布结果,而无需操纵线程和/或处理程序 AsyncTask被设计成一个围绕线程和处理程序的助手类,并不构成通用线程框架。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) {
...
}
公共类下载ImageStask扩展异步任务{
ImageView ImageView=null;
@凌驾
受保护位图doInBackground(ImageView…ImageView){
this.imageView=imageView[0];
返回下载图片((字符串)imageView.getTag());
}
@凌驾
受保护的void onPostExecute(位图结果){
设置图像位图(结果);
}
私有位图下载\u图像(字符串url){
...
}
在这里,onPostExecute,您可以轻松检查图像下载过程是否完成
进一步阅读
-
如果你想下载更大的文件,你可以考虑
将应用程序放入某种类型的
可能需要几个小时
你可以考虑使用新设备。
(使用Android 2.3+)
- 也是一个不错的资源->
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) {
...
}
公共类下载ImageStask扩展异步任务{
ImageView ImageView=null;
@凌驾
受保护位图doInBackground(ImageView…ImageView){
this.imageView=imageView[0];
返回下载图片((字符串)imageView.getTag());
}
@凌驾
受保护的void onPostExecute(位图结果){
设置图像位图(结果);
}
私有位图下载\u图像(字符串url){
...
}
在这里,onPostExecute,您可以轻松检查图像下载过程是否完成
进一步阅读
-
如果你想下载更大的文件,你可以考虑
将应用程序放入某种类型的
可能需要几个小时
你可以考虑使用新设备。
(使用Android 2.3+)
- 也是一个不错的资源->