Android笔记之Handler

 * 二者比较明显handler速度要快一点
 * 如果异步任务的数据特别庞大,AsyncTask这种线程池结构的优势就体现出来了。

public class MainActivity extends Activity {

    private Button button1, button2;private Dialog dialog;
    private ProgressDialog progressDialog;

    String path = "http://g.hiphotos.baidu.com/album/w%3D2048/sign=d6ae435755e736d158138b08af684dc2/9358d109b3de9c82bff8f4046d81800a18d8439f.jpg";
    //用做处理线程传递的消息handler.sendMessage(message1);
    private Handler handler = new Handler() {
        @Override
        public void handleMessage(android.os.Message msg) {
....
Bundle bundle = msg.getData(); String string = bundle.getString("Id"); if (msg.what == 1) { //这里1表示完成 dialog.dismiss(); } }; }; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); imageView = (ImageView) findViewById(R.id.imageView1); dialog = new ProgressDialog(this); dialog.setTitle("正在下载..."); dialog.setCancelable(false); progressDialog = new ProgressDialog(this); progressDialog.setTitle("标题Title..."); progressDialog.setMessage("信息Message..."); // 不会失去焦点 progressDialog.setCancelable(false); // 横向进度条 progressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL); button1 = (Button) findViewById(R.id.button1); button1.setOnClickListener(H); } private View.OnClickListener H = new OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub // 等同与于new Thread(new Runnable() {).start();,为了复用性选择新建class new Thread(new DownImgThread()).start();
// 显示对话框 dialog.show(); } };
// 内部类,于class之下,与onCreate平齐 public class DownImgThread implements Runnable { @Override public void run() { // TODO Auto-generated method stub // 线程主体,完成网络耗时操作 // 仅仅只做发送message的操作,更新ui什么的在handleMessage里面
........// 第一种 Message message1 = Message.obtain(); message1.obj = data; message1.what = 1; // 不sendMessage則不會產生效果 handler.sendMessage(message1); // 第二种,绑定handler // Message message2 = Message.obtain(handler); // message2.obj = data; // message2.what = isFinish; // message2.sendToTarget(); // //第三种 // //第四种 // Message message4 = Message.obtain(handler,0,1,2,"hello"); // //传递复杂的数据类型 // Bundle bundle=new Bundle(); // bundle.putString("Id", "007"); // message4.setData(bundle); // message4.sendToTarget(); } }

Done !

posted @ 2013-10-26 16:47  行云有影  阅读(215)  评论(0编辑  收藏  举报