• handler.post
  • activity.runOnUiThread
  • view.post
  • handler+Thread
  • AsyncTask

例子:

package com.chao.updateui;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.AsyncTask;import android.os.Bundle;import android.os.Handler;import android.os.Message;import android.util.Log;import android.view.Menu;import android.view.MenuItem;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;import android.widget.ImageView;import android.widget.TextView;public class MainActivity extends Activity implements OnClickListener{    private Layout layout;    private Handler handler;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        initLayout();        initValue();    }        private void initLayout(){        layout=new Layout();        layout.helloText=(TextView) findViewById(R.id.helloText);        layout.webImg=(ImageView) findViewById(R.id.webImg);        layout.button1=(Button) findViewById(R.id.button1);        layout.button2=(Button) findViewById(R.id.button2);        layout.button3=(Button) findViewById(R.id.button3);        layout.button4=(Button) findViewById(R.id.button4);        layout.button5=(Button) findViewById(R.id.button5);        layout.button1.setOnClickListener(this);        layout.button2.setOnClickListener(this);        layout.button3.setOnClickListener(this);        layout.button4.setOnClickListener(this);        layout.button5.setOnClickListener(this);    }        private void initValue(){        layout.button1.setText("1.Handler.post");        layout.button2.setText("2.activity.runOnUiThread");        layout.button3.setText("3.view.post");        layout.button4.setText("4.handler+Thread");        layout.button5.setText("5.AsyncTask");    }        private class Layout{        TextView helloText;        ImageView webImg;        Button button1;        Button button2;        Button button3;        Button button4;        Button button5;    }    //1.Handler.post    private void method_1(){        new Handler().postDelayed(new Runnable() {                        @Override            public void run() {                layout.helloText.setText("Handler的postDelayed延时一秒");            }        }, 1000);    }    //2.activity.runOnUiThread    private void method_2(){        new Thread(new Runnable() {                        @Override            public void run() {                try {                    Thread.sleep(1000);                    runOnUiThread(new Runnable() {                                                @Override                        public void run() {                            layout.helloText.setText("在子线程中使用activity.runOnUiThread");                        }                    });                } catch (InterruptedException e) {                    e.printStackTrace();                }            }        }).start();    }    //3.view.post    private void method_3(){        new Thread(new Runnable() {                        @Override            public void run() {                try {                    Thread.sleep(1000);                    layout.helloText.post(new Runnable() {                                                @Override                        public void run() {                            layout.helloText.setText("在子线程中使用TextView.post");                        }                    });                } catch (InterruptedException e) {                    e.printStackTrace();                }            }        }).start();    }    //4.Handler+Thread    private void method_4(){        handler=new Handler(){            @Override            public void handleMessage(Message msg) {                super.handleMessage(msg);                if(msg.what==1){                    Bundle bundle=msg.getData();                    String name=bundle.getString("name");                    String sex=bundle.getString("sex");                    String age=bundle.getString("age");                    layout.helloText.setText(name+"\n"+sex+"\n"+age);                }            }        };        Thread thread=new Thread(new Runnable() {                        @Override            public void run() {                try {                    Thread.sleep(1000);                } catch (InterruptedException e) {                    e.printStackTrace();                }                Message msg=Message.obtain();                msg.what=1;                                Bundle bundle=new Bundle();                bundle.putString("name", "张三");                bundle.putString("sex", "男");                bundle.putString("age", "16");                msg.setData(bundle);                                handler.sendMessage(msg);            }        });        thread.start();    }    //5.AsyncTask    private void method_5(){                AsyncTask<String, Integer, Bitmap> async=new AsyncTask<String, Integer, Bitmap>(){            @Override            protected Bitmap doInBackground(String... params) {                publishProgress(0);                HttpClient client = new DefaultHttpClient();                HttpGet get = new HttpGet(params[0]);                publishProgress(30);                final Bitmap bitmap;                try {                    HttpResponse response = client.execute(get);                    bitmap = BitmapFactory.decodeStream(response.getEntity()                            .getContent());                } catch (Exception e) {                    return null;                }                publishProgress(100);                return bitmap;            }            @Override            protected void onProgressUpdate(Integer... values) {                super.onProgressUpdate(values);                layout.helloText.setText("进度-"+values[0]+"%");            }            @Override            protected void onPostExecute(Bitmap result) {                super.onPostExecute(result);                if(result==null){                    layout.helloText.setText("获取图片失败");                }else{                    layout.helloText.setText("获取图片成功");                    layout.webImg.setImageBitmap(result);                }            }            @Override            protected void onPreExecute() {                layout.webImg.setImageBitmap(null);            }                    };                async.execute("http://imgsize.ph.126.net/?imgurl=http://img2.ph.126.net/-RloZHuMn-ultOW_YDF5fQ==/"                + "6608648723609095427.jpg_96x96x0x90.jpg");            }    @Override    public void onClick(View v) {        switch(v.getId()){        case R.id.button1:            method_1();            break;        case R.id.button2:            method_2();            break;        case R.id.button3:            method_3();            break;        case R.id.button4:            method_4();            break;        case R.id.button5:            method_5();            break;        default:            break;        }    }}
MainActivity.java

完整demo:http://pan.baidu.com/s/1eQcUV0Q

更多相关文章

  1. android 多点触摸 放大 缩小 图片
  2. Android 图片转成String保存
  3. android 图片的压缩
  4. Android 创建线程执行任务
  5. android 线程之创建一个子线程,并在UI线程中进行交互
  6. 自定义ProgressBar的图片
  7. Android studio 多线程网络文件下载
  8. android显示gif图片

随机推荐

  1. Android 用户界面(User Interface)概要
  2. android之模拟手机助手下载
  3. 报错记录-The option ‘android.enableUn
  4. android 如何判断开机完成
  5. Java中的WeakReference 和 SoftReference
  6. Android Studio 更换debug.keystore问题
  7. Android 4.0 Launcher2源码分析——导入e
  8. Android RxJava:一步步带你源码分析 RxJav
  9. Android Telephony启动过程源码分析
  10. Android中Handler的简析