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 应用方法数不能超过65536的问题
  2. android install faild insufficient storage错误的解决方法
  3. [Android]ListView & ViewPager & GridView 常见问题解决方法
  4. Android中数据存储的几种方法
  5. Android退出时关闭所有Activity的方法
  6. Android中判断Intent是否存在的方法
  7. Android 子线程修改UI方法对比
  8. Android SDK 2.2 下载安装方法
  9. android 4.0 内核(3.0)编译方法

随机推荐

  1. Android(安卓)Bundle类别
  2. Android输入框弹出是否挤压页面的问题
  3. 修改 Android(安卓)开机 LOGO
  4. android system setup and building (3)
  5. Android实现文件上传功能(接收端用strust2
  6. Android(安卓)Studio中与网站通信
  7. 转:Android(安卓)设置EditText光标颜色及
  8. Android(安卓)如何实现带滚动条的TextVie
  9. Android(安卓)XML Editor cannot process
  10. Github 上Top1的Android(安卓)异步网络请