您的位置:首页 > 产品设计 > UI/UE

Handler更新UI的几种方式

2016-11-11 20:50 218 查看
Handler、loop、MessageQueue的工作原理
Message:Handler接收和处理的消息对象
Looper:每个线程只能拥有一个looper.它的loop方法负责读取MessageQueue中的消息,读到信息之后就把消息返回给handler处理
MessageQueue:消息队列。程序创建Looper对象时,会在它的构造器中创建MessageQueue对象
Handler可以有多种不同的方法更新UI.下面的代码分别表示了handler更新ui的三种方法。
(在xml布局文件里面只添加了一个textview,用来测试ui的更新是否成功,此处省略xml文件代码)
代码如下:
public class MainActivity extends Activity {private TextView textView;private Handler handler = new Handler(){@Overridepublic void handleMessage(Message msg) {textView.setText("ok2");//第二种更新ui的方法}};//第一种用handler更新UI的方法private void handler1(){handler.post(new Runnable() {@Overridepublic void run() {textView.setText("ok1");}});}//第二种用handler更新UI的方法private  void handler2(){handler.sendEmptyMessage(1);//此处发送消息给handler,然后handler接收消息并处理消息进而更新ui}//第三种用handler更新UI的方法private void  handler3(){runOnUiThread(new Runnable() {@Overridepublic void run() {textView.setText("ok3");}});}@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);textView = (TextView) findViewById(R.id.textview);new Thread(){@Overridepublic void run() {try {Thread.sleep(1000);handler1();//第一种更新UI的方法handler2();//第二种更新UI的方法handler3();//第三种更新UI的方法} catch (InterruptedException e) {e.printStackTrace();}}}.start();}}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息