`
thierry.xing
  • 浏览: 664330 次
  • 性别: Icon_minigender_1
  • 来自: 北京
博客专栏
580fa9c1-4a0c-3f40-a55a-c9256ce73302
Sencha Touch中...
浏览量:0
社区版块
存档分类
最新评论

Android 异步任务加载图片代码

阅读更多

自己写的Android 异步任务加载图片代码

 

public class DownloadImageTask extends AsyncTask<String, Void, Bitmap>
{
	private static final String TAG = "DownloadImageTask";
	private String url;
	private ImageView imageViewReference;

	public DownloadImageTask(ImageView imageView)
	{
		imageViewReference = imageView;
	}

	@Override
	protected Bitmap doInBackground(String... params)
	{
		// TODO Auto-generated method stub
		Log.d(TAG, "thumb_image_url:" + params[0]);
		url = params[0];
		return downloadBitmap(url);
	}

	@Override
	protected void onPostExecute(Bitmap bitmap)
	{
		// BitmapDrawable drawable=BitmapDrawable.
		// TODO Auto-generated method stub
		if (imageViewReference != null)
		{
			imageViewReference.setImageBitmap(bitmap);
		}
	}

	Bitmap downloadBitmap(String url)
	{
		final int IO_BUFFER_SIZE = 4 * 1024;
		final HttpClient client = new DefaultHttpClient();
		// : AndroidHttpClient.newInstance("Android");
		final HttpGet getRequest = new HttpGet(url);
		try
		{
			HttpResponse response = client.execute(getRequest);
			final int statusCode = response.getStatusLine().getStatusCode();
			if (statusCode != HttpStatus.SC_OK)
			{
				Log.v("ImageDownloader", "Error" + statusCode + "while restrieving bitmap from" + url);
				return null;
			}
			final HttpEntity entity = response.getEntity();
			if (entity != null)
			{

				InputStream inputStream = null;
				try
				{
					inputStream = entity.getContent();
					return BitmapFactory.decodeStream(inputStream);
				} finally
				{
					if (inputStream != null)
					{
						inputStream.close();
					}
					entity.consumeContent();
				}
			}
		} catch (IOException e)
		{
			getRequest.abort();
			Log.v(TAG, "I/O error while retrieving bitmap from " + url, e);
		} catch (IllegalStateException e)
		{
			getRequest.abort();
			Log.w(TAG, "Incorrect URL: " + url);
		} catch (Exception e)
		{
			getRequest.abort();
			Log.w(TAG, "Error while retrieving bitmap from " + url, e);
		} finally
		{
			if ((client instanceof AndroidHttpClient))
			{
				((AndroidHttpClient) client).close();
			}
		}
		return null;
	}
}
 

 

1
3
分享到:
评论

相关推荐

    Android异步加载图片例子

    在这个"Android异步加载图片例子"中,我们将探讨如何在Android应用中实现这一功能。 首先,我们需要理解Android的主线程(UI线程)与工作线程的区别。主线程负责处理用户界面交互,而工作线程则用于执行耗时操作,...

    Android 图片异步加载 加载网络图片

    在Android应用开发中,图片加载是一项常见的任务,尤其是在处理大量图片或者网络图片时,为了提供良好的用户体验,我们通常会采用异步加载的方式。本篇将深入探讨Android平台上的图片异步加载策略,以及如何加载网络...

    Android异步加载网络图片

    以上就是关于“Android异步加载网络图片”这一主题的主要知识点,理解并掌握这些内容,对于开发出流畅、高效的Android应用至关重要。在实际项目中,开发者可以根据需求选择合适的库或方法,确保图片加载的高效性和...

    android Gridview 异步加载网络图片

    - 使用AsyncTask:可以创建一个异步任务类,实现doInBackground()方法来下载图片,然后在onPostExecute()中更新GridView的Adapter。 - 使用Loader API:LoaderManager和Loader接口可以帮助我们在后台加载数据,并...

    Android Listview异步加载图片

    1. **AsyncTask**:AsyncTask是一个轻量级的异步任务框架,适合处理短时间的后台任务。我们可以在doInBackground()方法中加载图片,然后在onPostExecute()方法中更新UI。但需要注意,由于AsyncTask的内存管理限制,...

    android listView 异步加载图片

    这里的“android listView 异步加载图片”指的是在不阻塞UI线程的情况下,从网络、本地存储或其他来源加载图片到ListView中的技术。 这篇名为“ImageLoader”的Java文件很可能就是一个实现图片异步加载的工具类。在...

    android异步加载网络图片实例

    Android 提供了 `AsyncTask` 类来执行后台操作,它非常适合处理轻量级的异步任务,如加载小尺寸的网络图片。`AsyncTask` 包含三个泛型参数,分别代表输入类型、进度类型和输出类型。在 `doInBackground()` 方法中...

    Android异步加载网络图片(线程)

    在Android应用开发中,异步加载网络图片是...总之,Android异步加载网络图片结合LruCache和线程回调是一种高效且实用的策略,可以显著提升应用的性能和用户体验。理解并掌握这些知识点对于Android开发者来说至关重要。

    Android异步图片加载

    Android异步图片加载就是为了解决这个问题而设计的一种技术策略。 Android系统默认的图片加载方式是同步的,即在主线程中进行,当图片数量多或图片体积大时,会导致UI线程阻塞,界面卡顿。因此,开发者通常采用异步...

    android异步加载图片Demo

    "android异步加载图片Demo"是一个示例项目,它演示了如何利用Android的`AsyncTask`来解决这个问题。`AsyncTask`是Android提供的一种轻量级的异步处理机制,用于在后台线程执行耗时操作,然后在UI线程更新结果,以...

    Android用AsyncTask异步加载图片(新)

    在Android应用开发中,异步加载图片是一项常见的需求,特别是在处理大数据量的图像时,如在GridView或ListView中展示图片。`AsyncTask`是Android提供的一种轻量级的多线程解决方案,它允许开发者在后台执行耗时操作...

    android listView图片异步加载(拖动时不加载,双缓存)

    否则启动异步任务加载图片。 5. 拖动时不加载:在ListView的OnScrollListener中,监听滚动事件。当用户在拖动时,取消当前正在加载的任务,防止不必要的加载。 四、优化策略 1. 使用PlaceHolder:在图片加载完成前...

    Android实现异步加载图片

    首先,Android异步加载图片的目标是将耗时的网络请求或本地文件读取操作放在后台线程,以防止阻塞主线程。Android提供了一些工具和库来帮助开发者实现这一目标,如AsyncTask、Handler、Loader等。在这个例子中,我们...

    android异步加载图片的实例代码

    在Android开发中,异步加载图片是一项至关重要的技术,它能有效地提高应用的用户体验,避免因为图片加载导致的UI卡顿。本实例代码是关于如何在Android项目中实现这一功能的具体示例,采用UTF-8编码,同时利用了...

    android 异步图片加载

    在Android应用开发中,异步图片加载是一项至关重要的技术,特别是在处理大量图片或者网络图片时。"Universal-ImageLoader"是Android平台上的一个经典库,它有效地解决了这个问题,提供了高效、灵活的异步图片加载...

    Android异步加载图片

    这个项目"Android异步加载图片"显然旨在演示如何在Android Studio环境下有效地实现这一功能。下面将详细介绍这个主题,包括相关知识点和可能的实现方式。 1. **线程管理**: Android主线程(UI线程)负责处理用户...

    Android 异步加载图片

    总的来说,Android异步加载图片涉及多方面的技术,包括线程管理、图片解码、缓存策略和资源优化。理解并熟练运用这些技术,能够帮助开发者构建出更加流畅、高效的移动应用。"AsyncListImage"这个项目提供了一个学习...

    android 异步加载图片

    总结来说,Android异步加载图片是提高用户体验和优化内存管理的关键技术,通过选择合适的异步加载机制和防止OOM的策略,可以确保应用的性能和稳定性。而第三方库如Glide、Picasso、Fresco则为我们提供了便利的工具,...

    Android ListView优化 异步加载图片

    AsyncTask是Android提供的轻量级异步任务框架,它包含三个泛型参数:Params(输入参数)、Progress(后台进度更新参数)、Result(返回结果)。在ListView的异步加载图片场景中,Params通常为网络图片URL,Result为...

Global site tag (gtag.js) - Google Analytics