zoukankan      html  css  js  c++  java
  • runOnUiThread更新主线程

    更新UI采用Handle+Thread,需要发送消息,接受处理消息(在回调方法中处理),比较繁琐。除此之外,还可以使用runOnUiThread方法。
     
    利用Activity.runOnUiThread(Runnable)把更新ui的代码创建在Runnable中,然后在需要更新ui时,把这个Runnable对象传给Activity.runOnUiThread(Runnable)。 
     
    Runnable对像就能在ui程序中被调用。如果当前线程是UI线程,那么行动是立即执行。如果当前线程不是UI线程,操作是发布到事件队列的UI线程。
     
    实现的功能与上一篇文章(Handler+Thread)相同。
     

    public class TestActivity extends Activity {

    Button btn;

    @Override

    protected void onCreate(Bundle savedInstanceState) {

    // TODO Auto-generated method stub

    super.onCreate(savedInstanceState);

    setContentView(R.layout.handler_msg);

    btn = (Button) findViewById(R.id.button1);

    btn.setOnClickListener(new OnClickListener() {

    @Override

    public void onClick(View view) {

    // TODO Auto-generated method stub

    new Thread(new Runnable() {

    @Override

    public void run() {

    // TODO Auto-generated method stub

            // 模拟耗时的操作。

    try {

    Thread.sleep(10000);

    } catch (InterruptedException e) {

    // TODO Auto-generated catch block

    e.printStackTrace();

    }

    // 更新主线程UI

    TestActivity.this.runOnUiThread(new Runnable() {

    @Override

    public void run() {

    // TODO Auto-generated method stub

    btn.setText("更新完毕!");

    }

    });

    }

    }).start();

    }

    });

    }

  • 相关阅读:
    NSIndexPath 延伸
    iOS进阶推荐的书目
    配置App真机测试证书的流程 一览
    NSAttributedString 的21种属性 详解
    KVO & 通知 小记
    贝塞尔曲线 & CAShapeLayer & Stroke 动画 浅谈
    提升开发人员修为的探讨
    热门IOS 第三方库
    drawRect & 内存 -> 深究
    CALayer & UIView 关系浅析
  • 原文地址:https://www.cnblogs.com/wanqieddy/p/4153203.html
Copyright © 2011-2022 走看看