• 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. 箭头函数的基础使用
  2. NPM 和webpack 的基础使用
  3. Python list sort方法的具体使用
  4. 【阿里云镜像】使用阿里巴巴DNS镜像源——DNS配置教程
  5. 【阿里云镜像】切换阿里巴巴开源镜像站镜像——Debian镜像
  6. android监听当前应用
  7. android使用SharedPreferences保存值,值变化会提示
  8. Android(安卓)WebView 使用方法,可以解决web视频播放层级问题。
  9. 获取Android(安卓)Device的信息

随机推荐

  1. Android(安卓)获取当前系统输入法和修改
  2. 让Android Studio支持系统签名
  3. Bitmap切割,GridView显示,更新
  4. Android '记住密码'功能
  5. android去除标题栏及状态栏
  6. as引入第三方包版本不一致 Android(安卓)
  7. init.rc
  8. Android已经完全不受Google控制了
  9. Android之gif动画实现
  10. Android 调用手机系统照相机拍照