Android 在子线程中更新UI的几种方法示例
本文介绍了Android在子线程中更新UI的几种方法示例,分享给大家,具体如下:
方式一:Handler和Message
①实例化一个Handler并重写handlerMessage()方法
privateHandlerhandler=newHandler(){ publicvoidhandleMessage(Messagemsg){ //处理消息 super.handleMessage(msg); switch(msg.what){ case1: button1.setText("点击安装"); break; case2: button1.setText("打开"); break; } }; };
②在子线程中获取或创建消息,并使用handler对象发送。
Messagemsg=handler.obtainMessage(); msg.what=1; handler.sendMessage(msg);
方式二:在子线程中直接调用Activity.runOnUiThread(Runnableaction)方法
runOnUiThread(newRunnable(){ @Override publicvoidrun(){ //更新UI的操作 } });
方式三:在子线程中调用View的post()方法
myView.post(newRunnable(){ @Override publicvoidrun(){ //更新UI myView.setText(“更新UI”); }});
方式四:在子线程中调用View.PostDelayed(Runnabe,long)
对方式三对补充,long参数用于制定多少时间后运行后台进程
方式五:Handler的post()方法
①创建一个Handler成员变量
privateHandlerhandler=newHandler();
②在子线程中调动post()方法
handler.post(newRunnable(){ @Override publicvoidrun(){ //更新UI myView.setText(“更新UI”); }});
方式六:AsyncTask
privateclassDownloadFilesTaskextendsAsyncTask//在这里声明了Params、Progress、Result参数的类型 { //因为这里不需要使用onPreExecute回调方法,所以就没有加入该方法 //后台线程的目的是更具URL下载数据 protectedLongdoInBackground(URL...urls){ intcount=urls.length;//urls是数组,不止一个下载链接 longtotalSize=0;//下载的数据 for(inti=0;i 对于一般的只是简单更新ui,情形不复杂的,使用方式二三就可以了,但是当情形比较复杂,还是推荐使用handler。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。