首页 > 代码库 > 在子线程中操作主线程
在子线程中操作主线程
当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(){ @Override public void handleMessage(Message msg) { // TODO Auto-generated method stub super.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这几种方法可以实现这种操作,
不过以上两种方法暂时够用了,其他几种情况以后再慢慢补充。
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。