在子线程中操作主线程
来源:互联网 发布:京都特色民宿酒店知乎 编辑:程序博客网 时间:2024/04/30 04:13
当android启动Activity时,会先启动一个主线程(也称为UI线程),用于控制Activity的当前View界面,在主线程控制的过程中,子线程是不能直接更新主线程数据的,但是android中提供了很多其他线程操作UI线程的方法
方法一:Activity.runOnUiThread( Runnable)
这是一个在子线程中设置主线程中TextView的实例:
NeedVerify.this.runOnUiThread(new Runnable() {public void run() {tvResult.setText("登陆失败");}});
方法二:Handler
private Handler handler=new Handler(){@Overridepublic void handleMessage(Message msg) {// TODO Auto-generated method stubsuper.handleMessage(msg);if (msg.what==1) {Object s= msg.obj;tvResult.setText("相似度为:"+s+"%不能登陆");}}};
Message message=new Message();message.obj=smilar;//传递的消息message.what=1;handler.sendMessage(message);
这种方法实现的过程:
1、子线程利用handler发送一条消息,消息被放在主线程的消息队列里
2、主线程里有一个looper消息的轮询器
3、如果轮询器发现新的消息,调用handlemessage的方法处理消息
好像还有View.post(Runnable)、View.postDelayed(Runnable,long)和AsyncTask这几种方法可以实现这种操作,
不过以上两种方法暂时够用了,其他几种情况以后再慢慢补充。
0 0
- 在子线程中操作主线程
- Java子线程中操作主线程Private级别数据
- C#子线程操作主线程中的控件
- <iOS>关于子线程和block中操作主线程界面的控件讨论
- C# 在自定义线程中采用系统委托方式操作主窗体线程控件的方法
- 在C#中子线程如何操作主线程中窗体上控件
- C# 子线程操作主窗体控件的解决方法
- C# 子线程操作主窗体控件的解决方法
- iOS多线程编程中,子线程如何访问和操作主线程UI中的视图控件(下载操作用子线程实现)
- 在非主线程中不能操作主线程中的View
- C#中子线程操作主线程中窗体上控件的方法
- C#中子线程操作主线程中窗体上控件的方法
- C#中子线程操作主线程中窗体上控件的方法
- C#中子线程操作主线程中窗体上控件的方法
- C#中子线程操作主线程中窗体上控件的方法
- C#新线程中操作主线程的控件 ,解…
- C# 线程 委托 回调-操作主线程定义的控件
- 如何在子窗体中操作主窗体上的控件
- java解惑之最后的笑声
- gridview中如何定位 选中行的关键值
- poj 1734 floyd求最小环,可得到环上的每个点
- C++ 标准库之typeid
- uva 11367 dijkstra+dp状态压缩
- 在子线程中操作主线程
- C++第9周(春)项目3 - 分数类
- 【读书笔记】代码大全34章:软件工艺主题
- GameObject和gameobject之间的区别
- 打开个人数据库
- boost::serialization 拆分serialize函数
- UVa 11234 - Expressions
- 七种角度分析对应分析方法
- Objective-c学习笔记—— Ubuntu 环境搭建 + HelloWorld