//第一种使用new Thread() {public void Run() {try {mHandler.post(new Runnable() {@Overridepublic void run() {// TODO 自动生成的方法存根TxtView.setText("asdasd");}});Thread.sleep(1000);} catch (InterruptedException e) {// TODO 自动生成的 catch 块e.printStackTrace();}}}.start();;

//第二种

MyRunable mMyRunable=new MyRunable();public class MyRunable implements Runnable{@Overridepublic void run() {ImageIndex++;ImageIndex=ImageIndex%3;Img.setImageResource(ImageID[ImageIndex]);mHandler.postDelayed(mMyRunable, 1);}}

mHandler.postDelayed(mMyRunable, 1);

//第三种

Handler mHandler3=new Handler(new Handler.Callback() {@Overridepublic boolean handleMessage(Message msg) {Toast.makeText(getApplicationContext(), ""+1, Toast.LENGTH_SHORT).show();return false;}}){public void handleMessage(Message msg){Toast.makeText(getApplicationContext(), ""+2, Toast.LENGTH_SHORT).show();}};

mHandler3.sendEmptyMessage(10000);

//第四种

Handler mHandler2=new Handler(){@Overridepublic void handleMessage(Message msg) {TxtView.setText(msg.arg1+"-"+msg.arg2+"-"+msg.obj);}};
Message message=new Message();message.arg1=88;message.arg2=100;message.obj=100;//任意OBJECT类型  实体类mHandler2.sendMessage(message);
Hnader  Looper  MessageQueue  之间的关系

Hnader负责发送消息    Looper负责接收Hnader发送的消息 并直接把消息回传给Hnader自己,MessageQueue就是一个储存消息的容器

HandlerThread 的用法

private TextView mTextView;private HandlerThread mHandlerThread;private Handler mHandler;

mTextView=(TextView)findViewById(R.id.id_txt);mHandlerThread=new HandlerThread("ThreadName");mHandlerThread.start();mHandler=new Handler(mHandlerThread.getLooper()){@Overridepublic void handleMessage(Message msg) {mTextView.setText("ThreadName------------"+Thread.currentThread());}};mHandler.sendEmptyMessage(1);

主线程与子线程之间的信息交互

private TextView mTextView;private TextView mTextView2;private Button Btn1;private Button Btn2;// 主线程的Handlerprivate Handler MainHandler = new Handler() {public void handleMessage(Message msg) {Message msgMessage =new Message();mTextView2.setText("住线程");threadHandler.sendMessageDelayed(msgMessage, 1000);};};// 子线程Handlerprivate Handler threadHandler;

mTextView = (TextView) findViewById(R.id.id_txt);mTextView2 = (TextView) findViewById(R.id.id_txt2);Btn1 = (Button) findViewById(R.id.button1);Btn2 = (Button) findViewById(R.id.button2);HandlerThread mHandlerThread = new HandlerThread("MainThread");mHandlerThread.start();threadHandler = new Handler() {@Overridepublic void handleMessage(Message msg) {   Message msgMessage =new Message();   mTextView2.setText("子线程");   MainHandler.sendMessageDelayed(msgMessage, 1000);}};Btn1.setOnClickListener(new OnClickListener() {public void onClick(View v) {MainHandler.sendEmptyMessage(1);}});Btn2.setOnClickListener(new OnClickListener() {public void onClick(View v) {MainHandler.removeMessages(1);threadHandler.removeMessages(1);}});

Android中更新UI的几种方式

//第一种

private Handler mHandler=new Handler(){public void handleMessage(Message msg) {};};

//第一种  通过Hnadler更新UInew Thread(){public void run() {try {Thread.sleep(2000);} catch (InterruptedException e) {// TODO 自动生成的 catch 块e.printStackTrace();}mHandler.post(new Runnable() {@Overridepublic void run() {mTextView.setText("asdasd");}});};}.start();

//第二种更新UI的方法

private Handler mHandler=new Handler(){public void handleMessage(Message msg) {mTextView.setText("asdasd");};};

new Thread(){public void run() {try {Thread.sleep(2000);} catch (InterruptedException e) {// TODO 自动生成的 catch 块e.printStackTrace();}Handler2();};}.start();

public void Handler2(){mHandler.sendEmptyMessage(1);}
//第三种是用内置函数   在子线程中直接调用

public void UpdayeUI(){runOnUiThread(new Runnable() {@Overridepublic void run() {mTextView.setText("asdasd");}});}
//第四种 使用控件自带的方法更新   在子线程中直接调用
public void ViewUI(){mTextView.post(new Runnable() {@Overridepublic void run() {mTextView.setText("asdasd");}});}







更多相关文章

  1. android listview 与 一般多线程配合产生的错误,资料汇总
  2. GPS开发常用方法 和用Criteria确定android location providerGPS
  3. Android Dialog触摸对话框外部让其消失的实现方法
  4. Android消息通知Totast的实现
  5. android 获取当前时间的方法
  6. Android ScrollView嵌套ViewPager不显示和出现空白部分 解决方法
  7. Android查询所有联系人和根据号码查询联系人方法
  8. Android系统信息查看方法
  9. 文件多线程下载实现

随机推荐

  1. Android(安卓)setContentView源码解析
  2. Android中的常用布局
  3. Android(安卓)实用工具Hierarchy Viewer
  4. Android(安卓)Power Management
  5. (展讯 /RK3066)Android:ADB详解 (2013-01
  6. Android中shape的使用
  7. 文章关键字 ‘nodpi’
  8. Android(安卓)NDK 使用
  9. 基于网络音频的Android播放程序简单示例
  10. android 中几种adapter的总结