Android多线程——Handler(一)实现图片下载
在UI线程中创建子线程——》在子线程中获取网络图片--》在线程中通过Message 传递二进制图片给Handler,--》Handler在handleMessage()中处理消息

公司主营业务:成都网站建设、网站建设、移动网站开发等业务。帮助企业客户真正实现互联网宣传,提高企业的竞争能力。创新互联是一支青春激扬、勤奋敬业、活力青春激扬、勤奋敬业、活力澎湃、和谐高效的团队。公司秉承以“开放、自由、严谨、自律”为核心的企业文化,感谢他们对我们的高要求,感谢他们从不同领域给我们带来的挑战,让我们激情的团队有机会用头脑与智慧不断的给客户带来惊喜。创新互联推出高平免费做网站回馈大家。
package com.example.android_handler_message;
import java.io.IOException;
import org.apache.http.HttpResponse;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.util.EntityUtils;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.app.Activity;
import android.app.ProgressDialog;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.view.Menu;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView;
public class MainActivity extends Activity {
private static int IS_FINISHED = 1;
private Button button = null;
private ImageView p_w_picpathView = null;
private String p_w_picpath_path = "http://i1.juyouqu.com/uploads/content//2014/04/1396611698344.jpg!w598";
private ProgressDialog dialog = null;
private Handler handle = new Handler(){
public void handleMessage(android.os.Message msg)
{
Bitmap bitmap = null;
byte[] data = (byte[])msg.obj;
bitmap = BitmapFactory.decodeByteArray(data, 0, data.length);
if(msg.what == IS_FINISHED)
{
dialog.dismiss();
p_w_picpathView.setImageBitmap(bitmap);
}
}
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
button = (Button)findViewById(R.id.button1);
p_w_picpathView = (ImageView)findViewById(R.id.p_w_picpathView1);
dialog = new ProgressDialog(this);
dialog.setTitle("提示");
dialog.setMessage("正在下载..........");
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
new Thread(new MyTask()).start();
dialog.show();
}
});
}
public class MyTask implements Runnable
{
@Override
public void run() {
// TODO Auto-generated method stub
HttpClient httpClient = new DefaultHttpClient();
HttpGet httpGet = new HttpGet(p_w_picpath_path);
try {
HttpResponse httpResponse = httpClient.execute(httpGet);
if(httpResponse.getStatusLine().getStatusCode() == 200)
{
byte[] data = EntityUtils.toByteArray(httpResponse.getEntity());
Message message = Message.obtain();
message.obj = data;
message.what = IS_FINISHED;
handle.sendMessage(message);
}
} catch (ClientProtocolException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
文章题目:Android多线程——Handler(一)实现图片下载
文章出自:http://www.jxjierui.cn/article/gijggp.html


咨询
建站咨询
