android子线程控制UI线程,以防:Only the original thread that created a view hierarchy can touch its views.
2015-07-23 13:39
639 查看
近段时间比较空闲,也有时间让我自己冲冲电~
今天和大家分享的是android 中子线程控制UI线程的几个常用方法,因为android是单线程执行的,如果你在子线程中操作有UI线程就会报错了以下错误:Only the original thread that created a view hierarchy can touch its views.
第一种:(简单明了)
XXXActivity.this.runOnUiThread(new Runnable() {
@Override
public void run() {
//do something
setTitle("控制UI线程")
}
});
第二种: Runnable + Handler.postDelayed(runnable,time)
然后在其他地方调用
handler.post(myRunnable);
handler.post(myRunnable,time);
第三种:Handler(子线程调用Handler的handle.sendMessage(msg);
Handler
handle = new Handler() {
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
mTextView.setText(来自网络的文字);
}
};
class MyThread extends Thread {
@Override
public void run() {
// 耗时操作
loadNetWork();
Message msg = new Message();
handle.sendMessage(msg);
super.run();
}
}
第四种:AsyncTask
(这块在接下去的一篇文章详细的描述)
今天和大家分享的是android 中子线程控制UI线程的几个常用方法,因为android是单线程执行的,如果你在子线程中操作有UI线程就会报错了以下错误:Only the original thread that created a view hierarchy can touch its views.
第一种:(简单明了)
XXXActivity.this.runOnUiThread(new Runnable() {
@Override
public void run() {
//do something
setTitle("控制UI线程")
}
});
第二种: Runnable + Handler.postDelayed(runnable,time)
private Handler handler = new Handler(); private Runnable myRunnable= new Runnable() { public void run() { if (run) { handler.postDelayed(this, 1000); count++; } tvCounter.setText("Count: " + count); } };
然后在其他地方调用
handler.post(myRunnable);
handler.post(myRunnable,time);
第三种:Handler(子线程调用Handler的handle.sendMessage(msg);
Handler
handle = new Handler() {
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
mTextView.setText(来自网络的文字);
}
};
class MyThread extends Thread {
@Override
public void run() {
// 耗时操作
loadNetWork();
Message msg = new Message();
handle.sendMessage(msg);
super.run();
}
}
第四种:AsyncTask
(这块在接下去的一篇文章详细的描述)
相关文章推荐
- 【从零开始学NGUI 】 (六)CheckBox
- NSOperation和NSOperationQueue的一些基本操作
- FireFox下 innerHTML取得不到value的处理方法
- RebornDB:下一代分布式Key-Value数据库
- 自定义UITableViewCell上的delete按钮
- Android酷炫实用的开源框架(UI框架)
- UIimageView 动画
- android--UI介绍(未更新完)
- 建造者模式(Builder Pattern)
- 路由交换的Serial,BRI,AUX,AUI等端口的区别和作用
- Leet Code -- Unique BST
- 几种常用的UIViewContentMode
- Implement Stack using Queues
- Implement Queue using Stacks
- 修改UISearBar的背景颜色
- 栅格系统布局--淘宝ued,好文章!
- UITableView 基本使用方法
- Android提高(16)——第六章 非UI线程真的不能更新UI吗
- hdu3415 Max Sum of Max-K-sub-sequence 单调队列
- sendmail发邮件提示Domain name required for sender address问题解决方案