更新UI时遇到:Only the original thread that created a view hierarchy can touch its views.
2013-07-29 10:08
459 查看
Only the original thread that created a view hierarchy can touch its views。原因是android中相关的view和控件不是线程安全的,我们必须单独做处理。我用Handler来解决。
Handler的官方描述:
A Handler allows you to send and process
Runnable objects associated with a thread's
Each Handler instance is associated with a single thread and that thread's message queue. When you create a new Handler, it is bound to the thread / message queue of the thread that is creating it -- from that point on, it will deliver messages and runnables
to that message queue and execute them as they come out of the message queue
Handler的使用场合:
1、 to schedule messages and runnables to be executed
as some point in the future;
安排messages和runnables在将来的某个时间点执行。
2、 to enqueue an action to be performed on a different
thread than your own.
将action入队以备在一个不同的线程中执行。即可以实现线程间通信。比如当你创建子线程时,你可以再你的子线程中拿到父线程中创建的Handler对象,就可以通过该对象向父线程的消息队列发送消息了。由于Android要求在UI线程中更新界面,因此,可以通过该方法在其它线程中更新界面。
我的用法是,
声明一个成员变量:private
Handler handler=null;
在onCreate()方法里:
handler=new Handler()
{
@Override
public void handleMessage(Message msg)
{
if(msg.arg1==1)
{
adapter=new MovieListAdapter(ListActivity.this,movieInfos);
gridView.setAdapter(adapter);
}
}
};
再设一个线程,调制当处理完毕数据库的操作时再去更新UI。
new Thread(new Runnable(){
@Override
public void run()
{
Message msg=handler.obtainMessage();
movieInfos=movieUtils.getMovieInfos(ListActivity.this);
msg.arg1=1;
handler.sendMessage(msg);
}
}).start();
Handler的官方描述:
A Handler allows you to send and process
Messageand
Runnable objects associated with a thread's
MessageQueue.
Each Handler instance is associated with a single thread and that thread's message queue. When you create a new Handler, it is bound to the thread / message queue of the thread that is creating it -- from that point on, it will deliver messages and runnables
to that message queue and execute them as they come out of the message queue
Handler的使用场合:
1、 to schedule messages and runnables to be executed
as some point in the future;
安排messages和runnables在将来的某个时间点执行。
2、 to enqueue an action to be performed on a different
thread than your own.
将action入队以备在一个不同的线程中执行。即可以实现线程间通信。比如当你创建子线程时,你可以再你的子线程中拿到父线程中创建的Handler对象,就可以通过该对象向父线程的消息队列发送消息了。由于Android要求在UI线程中更新界面,因此,可以通过该方法在其它线程中更新界面。
我的用法是,
声明一个成员变量:private
Handler handler=null;
在onCreate()方法里:
handler=new Handler()
{
@Override
public void handleMessage(Message msg)
{
if(msg.arg1==1)
{
adapter=new MovieListAdapter(ListActivity.this,movieInfos);
gridView.setAdapter(adapter);
}
}
};
再设一个线程,调制当处理完毕数据库的操作时再去更新UI。
new Thread(new Runnable(){
@Override
public void run()
{
Message msg=handler.obtainMessage();
movieInfos=movieUtils.getMovieInfos(ListActivity.this);
msg.arg1=1;
handler.sendMessage(msg);
}
}).start();
相关文章推荐
- 错误:Only the original thread that created a view hierarchy can touch its views——Handler的使用&用其更新UI
- Work 工作子线程更新UI控件--解决Only the original thread that created a view hierarchy can touch its views
- dialog子线程操作UI异常:Only the original thread that created a view hierarchy can touch its views
- dialog子线程操作UI异常:Only the original thread that created a view hierarchy can touch its views
- android子线程控制UI线程,以防:Only the original thread that created a view hierarchy can touch its views.
- 错误:Only the original thread that created a view hierarchy can touch its views——Handler的深入解析
- 【异常】Only the original thread that created a view hierarchy can touch its views.
- Only the original thread that created a view hierarchy can touch its views
- Only the original thread that created a view hierarchy can touch its views的解决记录
- 错误:Only the original thread that created a view hierarchy can touch its views——Handler的使用
- Only the original thread that created a view hierarchy can touch its views的相关
- Only the original thread that created a view hierarchy can touch its views.
- 错误:Only the original thread that created a view hierarchy can touch its views——Handler的使
- 开发中错误记录:解决:Only the original thread that created a view hierarchy can touch its views.
- Only the original thread that created a view hierarchy can touch its views
- Only the original thread that created a view hierarchy can touch its views:
- Only the original thread that created a view hierarchy can touch its views的相关
- 完美解决Only the original thread that created a view hierarchy can touch its views
- Only the original thread that created a view hierarchy can touch its views
- Only the original thread that created a view hierarchy can touch its views——Handler的使用