android 橘子汁 在子线程中更新主线程UI 困扰
来源:互联网 发布:手机淘宝店招尺寸2017 编辑:程序博客网 时间:2024/05/23 11:35
问题描述:要做这么一个功能,从网上获取一些数据,数据内容未获取到前显示一张图片(等待图片,但不是progressbar),一旦数据获取成功就通知主UI,使其为listView
这两天都在搞这个问题,用尽线程无数,始终无法解决诸如线程安全和4.0网络线程问题。
最开始,我将网络线程与UI主线程放在一起,可总是报android.os.NetworkOnMainThreadException 错误,更别提更新UI了!貌似这是因为android高版本为了优化类似主UI进程长时间等待所做的改变。在8以下的版本中都没有这样的问题。
后来,我将网络线程独立出来。启用一个网络线程用于控制网络数据获取和获取成功后的UI更新。可是问题又来了:新启动的网络线程中根本无法操作主线程里的UI。连context都传不进来。会报类似这样的错误android.view.ViewRoot$CalledFromWrongThreadException:Only the original thread that created a view hierarchy can touch its views.
终于,为了解决这些问题,我最终还是回归了android系统中的handler。使用handler来解决这个问题就简单多了。
步骤:
1.开始onCreate中设置等待UI
2.启动网络连接获取数据线程,此线程中将获得的数据赋值给主类全局数据参数,判断是否获取数据成功,成功则通知ui更新(向主UI线程的handler对象send一个msg)
3.在主UI线程中监视handler的msg,若发现msg被更改为预设情况,则更新ui
奉上代码:
- android 橘子汁 在子线程中更新主线程UI 困扰
- Android 在子线程中更新主线程UI
- Android中在主线程与在子线程中更新UI的探索
- Android子线程更新UI主线程方法之Handler
- Android子线程更新UI主线程方法之Handler
- javaFX 子线程更新主线程UI
- Android中为什么主线程更新UI,子线程执行耗时操作?
- android中UI主线程与子线程深入分析
- Android中UI主线程与子线程
- Android中通过其他线程更新主线程UI
- Android中通过其他线程更新主线程UI
- Android,UI主线程与子线程
- Android,UI主线程与子线程
- Android,UI主线程与子线程
- Android,UI主线程与子线程
- Android,UI主线程与子线程
- Android UI主线程和子线程
- Android,UI主线程与子线程
- U-Boot启动过程完全分析
- linux内核部件分析(二)——原子性操作atomic_t
- python 异常
- 利用概要文件进行资源管理
- shell命令中>/dev/null 2>&1的实现原理
- android 橘子汁 在子线程中更新主线程UI 困扰
- ios添加pre和post build action
- 如何让应用程序获得系统权限以及如何使用platform密钥给apk签名
- 删除用户
- PowerDesigner生成sql及说明文档
- 解决ie6 ie7中js不能通过appendChild("tr")添加table行的方法
- PostgreSQL的备份与还原
- Linux_problem 1: ntfs-3g
- 数据库模式