您的位置:首页 > 移动开发 > Android开发

关于android.view.ViewRoot$CalledFromWrongThreadException 异常

2013-04-07 19:34 471 查看

关于android.view.ViewRoot$CalledFromWrongThreadException 异常

在android移动开发中,进行多线程编程时,经常需要在主线程之外的一个单独的线程中进行某些操作,比如更新UI等操作。但是,在主线线程之外的线程中直接更新页面显示的问题是:系统会报这个异常,android.view.viewroot$calledfromwrongthreadexception:
only the original thread that created a view hierarchy can touch its views.在主线程外的线程中更新UI时,通常会采用handler来处理。

  以采用下面的方法之一来解决:

解决方案1:

在onCrete()函数中实现new GetLessonInfoThread().start();

//线程实现

class GetLessonInfoThread extends Thread {

@Override

public void run() {

try {

//相应操作。。。。

//此处发送消息

handler.sendEmptyMessage(0x001);

} catch (Exception e) {

// TODO Auto-generated catch block

}

}

}

//handler的实现
private Handler handler = new Handler(){

@SuppressLint("ParserError")

public void handleMessage(Message msg) {

if (msg.what == 0x001) {

//更新UI的操作

}

};

};

解决方案2:利用activity.runonuithread(runnable)

  把更新ui的代码创建在runnable中,然后在需要更新ui时,把这个runnable对象传给activity.runonuithread(runnable)。 这样runnable对像就能在ui程序中被调用。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐