1、使用Thread+Handler实现非UI线程更新UI界面

在UI Thread中创建Handler,用sendMessage(message)或者obtainMessage(result, obj).sendToTarget()在handleMessage方法中更新UI。
推荐使用obtainMessage(result, obj).sendToTarget(),因为这个方法会先去消息池中看看有没有Message,如果有,则取出这个Message,如果没有再去创建。这个可以防止Message对象的重复创建,节省资源。
而sendMessage(message)则每次要先new Message。

private MyHandler mHandler = new MyHandler();......mHandler.sendResult(MyHandler.UPDATE_VIEW, null);......       private class MyHandler extends Handler{               private static final int UPDATE_VIEW = 0;               @Override               public void handleMessage(Message msg) {                       switch (msg.what) {                       case UPDATE_VIEW:                               updateView();                               break;                       default:                               break;                       }               }               private void sendResult(int result, Object obj) {                       Message message = new Message();                       message.what = result;                       message.obj = obj;                       sendMessage(message);                       //obtainMessage(result, obj).sendToTarget(); //效率更高              }       }

或者用Handler.post(runnable)的方法去更新UI。

2、使用View的post方法来更新UI

mView.post(new Runnable() {@Overridepublic void run() {updateView();}});

3、使用Activity.runOnUiThread(runnable)的方法来更新UI

更多相关文章

  1. Android中从网络获取数据的方法
  2. Android(安卓)Cocos2d-x游戏集成友盟社会化组件分享功能
  3. android 日记log保存到本地简单方法
  4. Android之通过ContentProvider实现两个app(进程间)间通信以及函
  5. Android(安卓)onAttach 的使用
  6. android中如何捕获home键
  7. android 模拟器,创建sdcard 但是却是只读的,没办法修改属性
  8. Android(安卓)Service教程
  9. BlockCanary原理解析(Android端UI卡顿监测工具)

随机推荐

  1. Apktool 回编译出现No resource identifi
  2. Android字体Font相关知识
  3. 修改dialog的大小
  4. AndroidStudio出现tools:replace="androi
  5. 2012.08.24——— android ndk 编译ffmpe
  6. Android(安卓)usb网络共享开关
  7. Android模拟器无法启动
  8. Android(安卓)图片缩放
  9. android子线程中刷新界面控件
  10. 从 android sqlite 中获取boolean值