Android 中Handler 快速使用
Android 中Handler的初步使用
在Android 中要渲染UI就必须在主线程中,而常常耗时操作却又不得不开子线程,子线程中不能渲染UI,所以有了handler,handler在主线程中是一个类似协程一样的东西,在保持一个死循环轮询,当没有消息时处于一个阻塞状态,有消息时就回调收到消息时的函数。所以可以把子线程中的消息传递给 handler 由handler在主线程中来改变UI。
快速使用:
int num=0; final Handler handler = new Handler (){ @Override public void handleMessage(Message msg) { //收到消息后的回调函数 super.handleMessage (msg); // Log.d (TAG, "handleMessage: "+msg.what); if(msg.what==1001){ tv1.setText(num+"");//改ui } } }; //子线程中发消息 new Thread() { public void run() { while (true){ try { Thread.sleep(1); } catch (InterruptedException e) { e.printStackTrace(); } num+=1; handler.sendEmptyMessage (1001); } } }.start();
以上就可以快速使用,但只能修改为预设的num。
下面可以传递字符串消息:
Android Handler Message 传递字符串:
msg.what:
private static final int NETUPDATE = 10 ;
Handler接收部分:
private Handler mHandler = new Handler() { @Override public void handleMessage(Message msg) { switch (msg.what) { case NETUPDATE: parseIni(( String ) msg.obj); break ; }
发送部分:
Message tempMsg = mHandler.obtainMessage(); tempMsg.what = NETUPDATE; tempMsg.obj = buffer.toString(); mHandler.sendMessage(tempMsg);