在开发的过程中,我们经常涉及到在非主线程中更新ui的问题,我们能想到的几种方法如下:
- handle ---- message 结构
- AsyncTask
handler ---- message 结构
这个是我们更新ui的利器,但是 messageCode 是我不喜欢的,更新ui要发送code,还要在 handler 中 接收处理,如果更新的地方很多的话,会导致 code 在activity 中 乱飞,严重打乱我们代码的紧凑性。
AsyncTask
这个也是一个更新ui的好方法,但是一般继承它去实现异步更新的话,还是要写好多一部分辅助代码的,因为 AsyncTask 自带的需要实现的方法太多了,我们的需求是就在 textView 中显示 一下文字,如果用这个实现的话,简直是捅了马蜂窝了,什么 onPreExecute ,doInBackground(String... params),onProgressUpdate 等等方法会纷涌而至,让人防不胜防。即使我们写一个抽象类来抽取部分它的方法出来,那又得多个文件了,为了一个简单的 textView 显示,多少显得有些"不值"。
那么,runOnUiThread 就闪亮的登场了!
它的使用的话,也不难,但能简洁而轻快的解决简单 ui 更新的需求,例如以下是我点击button,更新 button文字的例子:
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.btn_test:
this.runOnUiThread(new Runnable() {
@Override
public void run() {
mBtnTest.setText("王者荣耀");
}
});
break;
case 1:
break;
default:
break;
}
}
效果图如下:
1.gif
ok,关于这方面的内容就讲到这啦,谢谢诶!
网友评论