Android中的View都不是线程安全的,所以如果在某一个新线程中直接更新主线程中的UI控件时就会报如下错误:
android.view.ViewRootImpl$CalledFromWrongThreadException: Only the original thread that created a view hierarchy can touch its views.

错误的意思是只有创建View的原始线程才能更新View。

为了解决在另一个线程中更新UI控件的问题,我们可以使用如下几种解决方案:
1. 自己写Handler解决,参见《Android中Handler的使用》。
2. 使用Activity#runOnUiThread(Runnable)方法,该方法接收一个Runnable对象作为参数,我们需要在该Runnalble的run方法中更新View,该方法内部也使用了Handler。
3. 使用View中的postXXX等方法:
View#post(Runnable)
View#postDelayed(Runnable, long)
View#postDelayed(Runnable action, long delayMillis)
这几个方法也是接收Runnable对象作为参数,也是在该Runnable的run方法中更新View,这几个方法内部也是用Handler实现的。

更多相关文章

  1. Android统计EditText的字母数字以及汉字的统计方法
  2. 使用ListActivity得到ListView
  3. Android(安卓)- bitmap简单总结
  4. Android之adt 23找不到NDK路径设置解决方案
  5. Android应用程序获取ROOT权限的方法
  6. Android(安卓)Framework AIDL的使用
  7. AOSP和Chromium的Android(安卓)WebViewTest
  8. 浅谈Java中Collections.sort对List排序的两种方法
  9. Python list sort方法的具体使用

随机推荐

  1. Sqlite在android中的使用
  2. android EditText限制输入框小数位数
  3. Android应用程序键盘(Keyboard)消息处理机
  4. android各个版本代号
  5. retrofit中的几个重要角色
  6. 如何在Android平台上使用JS直接调用Java
  7. android 网络请求get,post实现
  8. Android 中Base64的操作
  9. android播放器(music player)源码分析2(Base
  10. Android调用mongoose实现Web服务器