Android handler异步更新
来源:互联网 发布:婚纱视频制作软件 编辑:程序博客网 时间:2024/05/18 13:45
方法一:
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
- 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
- android动画 对fillBefore 和 fillAfter的理解
- android Tween Animation四种动画
- android 第一次运行应用的引导界面
- java线程同步
- android 大图片在listview中内存溢出的问题
- Android handler异步更新
- android 代码片段
- android 简单的aidl
- android BroadcastReceiver
- android 最全的shape属性
- android pcm编解码
- [Java]读取文件方法大全
- android jni操作数组
- android jni打印log