首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 移动开发 > Android >

android listview 与 一般多线程配合产生的异常,资料汇总

2012-08-14 
android listview 与 一般多线程配合产生的错误,资料汇总1---------------------------------------------

android listview 与 一般多线程配合产生的错误,资料汇总

1---------------------------------------------------

?

?

在做项目时,偶尔写程序发现一个不经意的混乱事件!!如下代码:
public void onCreate(Bundle savedInstanceState) {
..
..
..
new Thread(new Runnable(){

??????????? public void run() {
??????????????? // TODO Auto-generated method stub
??????????????? btn_start_audio.setText("Confuse");
??????????? }
???????????
??????? });
??? }
??? 这时竟然可以运行成功,而且使button的text修改成功。"Only the original thread that created a view hierarchy can touch its views.“ 异常。
??? 不过此次更改Button Text仍然是由UI线程完成的。因为在子线程启动之后,开始Run,而这时Button的Parent,或者是parent 的parent的(父视图的服视图) mParent.isLayoutRequested() 为true。导致子线程无法运行到 ViewRoot的requestLayout(),所以不会抛出上述异常。但是此时Button类里面的mText变量已经被更改了。当CPU切换到UI线程开始layout整个View 时,同时也就给Button 展现了一个 mText(刚才已经更新)。

new Thread(new Runnable(){

??????????? public void run() {
??????????????? Thread.Sleep(500);
??????????????? // TODO Auto-generated method stub
??????????????? btn_start_audio.setText("Confuse");
??????????? }
???????????
??????? });
??? }
这样就会出现异常。

<script type="text/javascript"> /*728*90,创建于2011-8-18*/ var cpro_id = 'u579978'; </script><script src="http://cpro.baidu.com/cpro/ui/c.js" type="text/javascript"></script><script src="http://pos.baidu.com/ecom?di=u579978&amp;tm=BAIDU_CPRO_SETJSONADSLOT&amp;fn=BAIDU_CPRO_SETJSONADSLOT&amp;baidu_id=" type="text/javascript"></script>-

<script type="text/javascript"> /*250*200,创建于2011-8-18*/var cpro_id = 'u579967';</script><script src="http://cpro.baidu.com/cpro/ui/f.js" type="text/javascript"></script><script src="http://pos.baidu.com/ecom?di=u579967&amp;tm=BAIDU_CPRO_SETJSONADSLOT&amp;fn=BAIDU_CPRO_SETJSONADSLOTFLOAT&amp;baidu_id=" type="text/javascript"></script>

热点排行