zoukankan      html  css  js  c++  java
  • 用Handler的post()方法来传递线程中的代码段到主线程中执行

    自定义的线程中是不能更新UI的,但是如果遇到更新UI的事情,我们可以用handler的post()方法来将更新UI的方法体,直接传送到主线程中,这样就能直接更新UI了。Handler的post()方法就是将Runnable中的代码段传送到主线程。

    布局文件就是个textView,我就不贴了。

    全部代码

    package com.kale.handler;
    
    import android.app.Activity;
    import android.graphics.Color;
    import android.os.Bundle;
    import android.os.Handler;
    import android.widget.TextView;
    
    /**
     * @author:Jack Tony
     * @tips  :将自己线程中的代码段传递到主线程中执行,用post方法就可以把runnable中的代码进行传递了。
     * @date  :2014-7-31
     */
    public class MainActivity extends Activity {
        TextView valueTv;
        public Handler mHandler;
        private MyThread thread;
        // 定义一个自己的线程
        class MyThread extends Thread {
            @Override
            public void run() {
                System.out.println("线程开始运行");
                Runnable r = new Runnable() {
                    @Override
                    public void run() {
                        valueTv.setTextColor(Color.RED);
                        valueTv.setTextSize(30);
                        valueTv.setText("从线程中传过来的代码段");
                        System.out.println("执行runnable代码的线程:"+Thread.currentThread().getName());
                    }
                };
                //上面代码中的runnable线程体经过post后会直接传送到主线程中执行修改字体的操作。
                //post直接可以把一段代码当做变量一样传递,但是请不要传送耗时操作的代码到主线程中
                mHandler.post(r);
            }
        }
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            valueTv = (TextView)findViewById(R.id.vale_textView);
            mHandler = new Handler();
            thread = new MyThread();
            // 启动线程
            thread.start();
        }
    
    
        
    }
  • 相关阅读:
    C# UrlDecode将+替换为空格问题
    Hashtable无序,用Dictionary代替
    Oracle查找Web执行SQL
    远程连接Oracle服务器
    asp.net core网站SSL nginx配置
    Supervisor踩过的坑
    centos nginx配置支持WebSocket(signalR)
    SignalR在asp.net core下使用
    Hangfire 在asp.net core环境的使用
    liteUploader上传控件的封装使用
  • 原文地址:https://www.cnblogs.com/tianzhijiexian/p/3883537.html
Copyright © 2011-2022 走看看