Activity中runOnUiThread方法的使用

在图片异步下载时,我们需要在下载完成之后对ImageView进行更新,但根据Android的规定,UI部分的更新必须在主线程中才能进行更新。那么就出现了一个矛盾了,下载线程和主线程是两个线程,这个时候如何对ImageView进行更新呢? 方法也很多,Handler是一种方法。

但是其实还有一种更简单的方法那就是使用runOnUiThread来进行更新。

runOnUiThread可以帮助你在线程中执行UI更新操作

runOnUiThread(Runnable run)定义一个线程专门用来更新UI

bitmapRun是我自己定义的一个Runnable线程接口,定义时传递了两个参数 一个是Bitmap图片对象,一个是ImageView对象。

BitmapDisplayer bitmapRun = new BitmapDisplayer(bmp,imageView);
Activity a = (Activity)imageView.getContext();
a.runOnUiThread(bitmapRun);
class BitmapDisplayer implements Runnable {
		Bitmap bitmap;
		ImageView imageView;
		public BitmapDisplayer(Bitmap b, ImageView i) {
			bitmap = b;
			imageView = i;
		}

		public void run() {
			if (bitmap != null) {
			/**
			/*可以在这里对bitmap进行压缩等处理 ,或定义imageView中图片的显示样式
			*/
				imageView.setImageBitmap(bitmap);

			}
		}
	}
通过上面的方法,我可以自己封装一个简单的异步加载图片的方法。只需要将ImageView 对象和图片URL 传递过来就可以了在方法中通过URL下载文件,获取图片的Bitmap对象,然后通过ImageView对象获取Activity来进行UI更新。

你可能感兴趣的:(Android)