2017.12.18 Android开发之消息队列(实现子线程修改UI组件)

青春须早为,岂能长少年。这篇文章主要讲述2017.12.18 Android开发之消息队列(实现子线程修改UI组件)相关的知识,希望能为你提供帮助。
 
1.界面布局,以及组件初始化:

2017.12.18 Android开发之消息队列(实现子线程修改UI组件)

文章图片

组件初始化:
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组件)】
2017.12.18 Android开发之消息队列(实现子线程修改UI组件)

文章图片

 

    推荐阅读