Android新线程中更新主线程UI中的View方法汇总
16lz
2021-01-23
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实现的。
更多相关文章
- 彻底解决Android 应用方法数不能超过65536的问题
- android install faild insufficient storage错误的解决方法
- [Android]ListView & ViewPager & GridView 常见问题解决方法
- Android中数据存储的几种方法
- Android退出时关闭所有Activity的方法
- Android中判断Intent是否存在的方法
- Android 子线程修改UI方法对比
- Android SDK 2.2 下载安装方法
- android 4.0 内核(3.0)编译方法