2017.12.18 Android开发之消息队列(实现子线程修改UI组件)
Posted 小春熙子
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了2017.12.18 Android开发之消息队列(实现子线程修改UI组件)相关的知识,希望对你有一定的参考价值。
1.界面布局,以及组件初始化:
组件初始化:
private Button button; private Handler handler; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); button=(Button)findViewById(R.id.button); button.setOnClickListener(new ButtonListener()); handler=new FirstHandler(); }
2.消息队列的使用:
class ButtonListener implements View.OnClickListener{ //设置监听器,使得每点一次按钮生成一次消息 @Override public void onClick(View view) { Message msg=handler.obtainMessage(); msg.what=8; //msg的其中一个参数,可以设置很多msg的参数 handler.sendMessage(msg); //把消息扔出去 } } class FirstHandler extends Handler{ @Override public void handleMessage(Message msg) { //处理消息,传一个消息体进来,理解为一个对象,可以是字符串,int型之类的 int what=msg.what; System.out.println("数据what是:"+what); super.handleMessage(msg); } }
3.通过消息队列来修改主线程的文字:
class MyHandler extends Handler{ @Override public void handleMessage(Message msg) { System.out.println("这是来自MyHandler的信息:"+Thread.currentThread().getName()); String s=(String)msg.obj; textview.setText(s); super.handleMessage(msg); } } class ButtonListener implements View.OnClickListener{ @Override public void onClick(View view) { Thread thread=new NetWorkThread(); thread.start(); } } class NetWorkThread extends Thread{ @Override public void run() { System.out.println("来自NetWorkThread的信息:"+Thread.currentThread().getName()); try { Thread.sleep(3000); } catch (InterruptedException e) { e.printStackTrace(); } String s="有理想的爱国青年"; Message msg=handler.obtainMessage(); msg.obj=s; handler.sendMessage(msg); super.run(); } }
以上是关于2017.12.18 Android开发之消息队列(实现子线程修改UI组件)的主要内容,如果未能解决你的问题,请参考以下文章