美文网首页Android知识程序员Java学习笔记
工作线程转换为UI线程三种方式

工作线程转换为UI线程三种方式

作者: dayang | 来源:发表于2016-12-08 10:05 被阅读375次

我们将工作线程转换为UI线程,主要是进行UI的更新操作;
在工作线程中使用三种方法:

  • Activity的runOnUiThread(Runnable);
  • View 的post(Runnable);
  • View 的postDelayed(Runnable);
三个方法传的是Runnable接口对象

new Runnable() {
@Override
public void run() {
} }

案例:不断设置TextView的值

以下为三种方式的部分代码,省略布局xml,以及控件的绑定等操作

runOnUiThread(Runnable)
//Button的点击事件
public void onClick(View view){
        //开启一个工作线程,进行值的改变
        new Thread(new Runnable() {
            @Override
            public void run() {
                while(i<100){
            //每隔0.08秒更新设置一次值
                try {
                        Thread.sleep(80);
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                    i++;
            //Activity的方法
                    runOnUiThread(new Runnable() {//加入UI线程,更新UI
                        @Override
                        public void run() {
                            textView.setText(i+"%");
                        }
                    });
                }
            }
        }).start();
}
post(Runnable)
  //Button的点击事件
  public void onClick(View view){
        new Thread(new Runnable() {
            @Override
            public void run() {
                while(i<100){
                    i++;
                    try {
                        Thread.sleep(80);
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
           //View的方法
                    textView.post(new Runnable() {//加入UI线程,更新UI
                        @Override
                        public void run() {
                            textView.setText(i+"%");
                        }
                    });
                }
            }
        }).start();
    }
postDelayed(Runnable)
//Button的点击事件
    public void onClick(View view){
        new Thread(new Runnable() {
            @Override
            public void run() {
                while(i<100){
                    i++;
                    try {
                        Thread.sleep(80);
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                    //0.8秒后开始更新UI
                    textView.postDelayed(new Runnable() {//加入UI线程,更新UI
                        @Override
                        public void run() {
                            textView.setText(i+"%");
                        }
                    },800);
                }
            }
        }).start();
    }

相关文章

  • 工作线程转换为UI线程三种方式

    我们将工作线程转换为UI线程,主要是进行UI的更新操作;在工作线程中使用三种方法: Activity的runOnU...

  • 谈论项目

    网络层#### 创建子线程的三种方式//在ui线程(主线程)进行操作runOnUiThread(new Runna...

  • 子线程更新UI的方法

    子线程中不能直接更新UI,如果直接更新的话会发生崩溃所以要在主线程中更新UI,总计三种回到主线程更新UI的方式 1...

  • android主线程和子线程之间的消息传递

    转自落叶潇潇雨的博客 从主线程发送消息到工作线程(子线程) 从非UI线程传递消息到UI线程(界面主线程),因为主界...

  • Android--多线程处理

    在Android中,UI线程(主线程)处理UI操作,工作线程处理耗时任务。下面列举4中多线程方式: Handler...

  • NSThread实现多线程

    创建NSThread有三种方式 三种方法都是将target对象的selector方法转换为线程执行体,select...

  • 实用的Android面试题

    一、Android 线程 1. 其他线程访问UI 线程方式: Activity.runOnUiThread(Run...

  • 大厂Android面试题汇总(四)线程、多线程和线程池

    JAVA 线程状态及转化 开启线程的三种方式?java创建线程的三种方式及其对比 线程和进程的区别?1,进程是cp...

  • Handler机制的初步了解

    定义:一种消息传递机制 作用:多线程并发工作时,工作线程(子线程)将UI更新的额消息发送到主线程,实现子线程对UI...

  • Handler知识点

    Handler有什么用? 将工作线程需操作UI的消息 传递 到主线程,使得主线程可根据工作线程的需求 更新UI,从...

网友评论

    本文标题:工作线程转换为UI线程三种方式

    本文链接:https://www.haomeiwen.com/subject/tcgjmttx.html