当前位置:
首页 >
运用Handler.post()方法进行数据更新跟用Message对比(18)
发布时间:2025/5/22
41
豆豆
生活随笔
收集整理的这篇文章主要介绍了
运用Handler.post()方法进行数据更新跟用Message对比(18)
小编觉得挺不错的,现在分享给大家,帮大家做个参考.
2019独角兽企业重金招聘Python工程师标准>>>
//运用Handler.post() public class SecondActivity extends Activity {private String url = "http://litchiapi.jstv.com/Attachs/Top/11949/e650e0201de541d2ba91dca202b0fcfe.jpg";private ImageView imageview;private Handler handler = new Handler();// 注意:这里用handler.post()方法,所以不用实现里面的方法// 这种方法是不用到Message(),只是利用handler.post(Runable)方法来更新,里面其实放的是代码,注意:存放的代码它属于主线程;// 注意:这里用handler.post()方法,所以不用实现里面的方法@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);// 这个SecondActivity要用主布局记得在功能清单文件改配置imageview = (ImageView) this.findViewById(R.id.imageview);// 子线程,下载操作new Thread(new Runnable() {@Overridepublic void run() {Log.i("MainActivity", "first"+ Thread.currentThread().getName());byte[] data = loadImage(url);final Bitmap bitmap = BitmapFactory.decodeByteArray(data, 0,data.length);handler.post(new Runnable() {// 注意:这里是主线程,只是一个代码,因为它没有启动所以不算线程@Overridepublic void run() {Log.i("MainActivity", "second"+ Thread.currentThread().getName());imageview.setImageBitmap(bitmap);}});}}).start();}public byte[] loadImage(String url) {try {HttpClient client = new DefaultHttpClient();HttpGet get = new HttpGet(url);HttpResponse response = client.execute(get);if (response.getStatusLine().getStatusCode() == 200) {return EntityUtils.toByteArray(response.getEntity());}} catch (ClientProtocolException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}return null;} }//使用handler.sendEmptyMessage()通知更新 //这是第一种方法:利用handler.sendEmptyMessage()通知更新 //另外一种方法是不用到Message(),只是利用handler.post(Runable)方法来更新,里面其实放的是代码,注意:存放的代码它属于主线程;public class MainActivity extends Activity {private String url = "http://litchiapi.jstv.com/Attachs/Top/11949/e650e0201de541d2ba91dca202b0fcfe.jpg";private ImageView imageview;private ProgressDialog dialog;Handler handler = new Handler() {public void handleMessage(android.os.Message msg) {switch (msg.what) {case 0:dialog.show();break;case 1:imageview.setImageBitmap((Bitmap) msg.obj);break;case 2:dialog.dismiss();break;}};};@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);imageview = (ImageView) this.findViewById(R.id.imageview);dialog = new ProgressDialog(this);dialog.setTitle("提示");dialog.setIcon(R.drawable.ic_launcher);dialog.setMessage("正在下载数据!!!");new Thread(new Runnable() {@Overridepublic void run() {// 1.显示对话框handler.sendEmptyMessage(0);// 通知主线程显示对话框// 2.下载数据byte[] data = loadImage(url);Bitmap bitmap = BitmapFactory.decodeByteArray(data, 0,data.length);Message message = Message.obtain();message.what = 1;message.obj = bitmap;handler.sendMessage(message);// 发送主线程设置图片显示// 3.关闭对话框handler.sendEmptyMessage(2);}}).start();}public byte[] loadImage(String url) {try {HttpClient client = new DefaultHttpClient();HttpGet get = new HttpGet(url);HttpResponse response = client.execute(get);if (response.getStatusLine().getStatusCode() == 200) {return EntityUtils.toByteArray(response.getEntity());}} catch (ClientProtocolException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}return null;} }转载于:https://my.oschina.net/u/2541146/blog/625268
总结
以上是生活随笔为你收集整理的运用Handler.post()方法进行数据更新跟用Message对比(18)的全部内容,希望文章能够帮你解决所遇到的问题。
- 上一篇: 《github一天一道算法题》:分治法求
- 下一篇: 一分钟了解阿里云产品:容器服务概述