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。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。