Android handler异步更新
来源:互联网 发布:libevent windows 编译 编辑:程序博客网 时间:2024/05/18 06:44
Android handler异步更新
方法一:
package com.example.handlerdemo;import org.apache.http.HttpResponse;import org.apache.http.client.HttpClient;import org.apache.http.client.methods.HttpGet;import org.apache.http.impl.client.DefaultHttpClient;import android.app.Activity;import android.graphics.Bitmap;import android.graphics.BitmapFactory;import android.os.Bundle;import android.os.Handler;import android.os.Message;import android.view.View;import android.widget.ImageView;import android.widget.Toast;public class MainActivity extends Activity { private static final int MSG_SUCCESS = 0;// 获取图片成功的标识 private static final int MSG_FAILURE = 1;// 获取图片失败的标识 ImageView mImageView; Handler mHandler = new Handler() { public void handleMessage(Message msg) { switch (msg.what) { case MSG_SUCCESS: mImageView.setImageBitmap((Bitmap) msg.obj);// imageview显示从网络获取到的logo break; case MSG_FAILURE: Toast.makeText(getApplication(), "下载失败", Toast.LENGTH_LONG) .show(); break; } } };protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mImageView = (ImageView) findViewById(R.id.imageView1);// 显示图片的ImageView } public void onClick(View v) { switch (v.getId()) { case R.id.button1: mImageView.setImageBitmap(null); new Thread(new Runnable() { public void run() { HttpClient hc = new DefaultHttpClient(); HttpGet hg = new HttpGet( "http://www.baidu.com/img/baidu_sylogo1.gif");// 获取百度的LOGO final Bitmap bm; try { HttpResponse hr = hc.execute(hg); bm = BitmapFactory.decodeStream(hr.getEntity() .getContent()); } catch (Exception e) { mHandler.obtainMessage(MSG_FAILURE).sendToTarget();// 获取图片失败 return; } mHandler.obtainMessage(MSG_SUCCESS, bm).sendToTarget();// 获取图片成功,向ui线程发送MSG_SUCCESS标识和bitmap对象 } }).start(); break; } }}
不过这个方法有个小问题 老是提示会内存泄露
方法二:
package com.example.handlerdemo;import org.apache.http.HttpResponse;import org.apache.http.client.HttpClient;import org.apache.http.client.methods.HttpGet;import org.apache.http.impl.client.DefaultHttpClient;import android.app.Activity;import android.graphics.Bitmap;import android.graphics.BitmapFactory;import android.os.Bundle;import android.os.Handler;import android.os.Message;import android.view.View;import android.widget.ImageView;import android.widget.Toast;public class MainActivity extends Activity { ImageView mImageView; Handler mHandler02 = new Handler(); protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mImageView = (ImageView) findViewById(R.id.imageView1);// 显示图片的ImageView } public void onClick(View v) { switch (v.getId()) { case R.id.button2: mImageView.setImageBitmap(null); new Thread(new Runnable() { public void run() { HttpClient hc = new DefaultHttpClient(); HttpGet hg = new HttpGet( "http://www.baidu.com/img/baidu_sylogo1.gif");// 获取百度的LOGO try { HttpResponse hr = hc.execute(hg); final Bitmap bm = BitmapFactory.decodeStream(hr.getEntity() .getContent()); mHandler02.post(new Runnable() { public void run() { mImageView.setImageBitmap(bm);// imageview显示从网络获取到的logo } }); } catch (Exception e) { mHandler02.post(new Runnable() { public void run() { Toast.makeText(getApplication(), "下载失败", Toast.LENGTH_LONG).show(); } }); } } }).start(); break; default: break; } }}
用方法二是不会出内存泄露的警告的
效果图:
csdn下载地址:http://download.csdn.net/detail/wenwei19861106/4868799
0 0
- Android handler异步更新
- Android handler异步更新
- Android 异步更新UI----handler+thread
- Android 异步更新UI----handler+thread
- Android使用Handler异步更新UI
- Android 异步更新UI----handler+thread
- Android 异步更新UI----handler+thread
- Android总结Handler异步更新UI界面
- handler异步更新UI
- Android-初识Handler-子线程异步更新UI
- Android记录11--异步更新之Handler.post解惑
- Android异步更新UI-线程池-Future-Handler实例分析
- Android记录11--异步更新之Handler.post解惑
- Android运用Handler和Message实现异步更新UI界面
- Android异步加载数据更新UI(Thread+Handler)
- android 异步任务 设置 超时,使用handler更新通知
- Android异步相关-Handler
- android handler 更新UI
- adb shell dumpsys activity
- android的Service和Notification学习
- spring源码阅读(七)之bean解析
- HDoj- 2054 A==B?
- Dedecms模板常用调用标签代码整理
- Android handler异步更新
- 第12周项目2-分离正整数中的各组数*
- tomcat启动成功,访问主页失败的一种原因
- Android进程间通信--碎碎念
- android 主线程与分线程 做同步
- C#视频总结
- HDOJ-1060-Leftmost Digit(求n^n的最高位)
- 009Java对象内存管理
- android Tween Animation四种动画