android之ViewRoot$CalledFromWrongThreadException异常处理

上周一直在忙HYB项目的单元测试,在一次测试过程中,遇到了ViewRoot$CalledFromWrongThreadException异常,很是困惑.

上网查找资料,翻阅sdk文档,再加上自己的一些处理,问题得到解决.和大家分享分享心得.

ViewRoot$CalledFromWrongThreadException details:android.view.ViewRoot$CalledFromWrongThreadException: Only the original thread that created a view hierarchy can touch its views.

大概意思就是:只有原始创建这个视图层次的线程才能修改它的视图,换句话说也就是必须在程序的主线程(UI线程)中更新界面的显示工作.

从网上看到的一段描述,感觉描述的还不错:

在一个Android程序运行的时候,会单独启动一个Process,在默认的情况下,所有这个程序的Activity或者是Service等其他组件都会跑在这个Process中,一个Android程序默认情况下只有一个Process,但是一个Process中允许有多个Thread.在这么多的Thread中,有一种Thread称其为UI Thread,UI Thread在android程序运行的时候就被创建,是一个Process中的主线程Main Thread,顾名思义主要就是负责UI界面的显示、更新、以及与控件的交互.在Android程序创建之初,是一种单线程模型,所有的任务都在一个线程中运行,因此我们认为UI Thread执行的每一个函数时间都应该越短越好,耗时的操作尽可能的交给子线程去做,以免阻塞主线程.

言归正传:在我的单元测试中这个问题是怎么解决的呢?

我在tearDown()方法里面,将所有的Widget的clearFocus()方法都给移除了.

结果绿色通过条亮起.如下图所示:

2011.10.20.pm

jack.li

QQ:523072842
Email:523072842@qq.com

转载于:https://www.cnblogs.com/jackxlee/archive/2011/10/20/2218972.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值