zoukankan      html  css  js  c++  java
  • android Activity runOnUiThread() 方法使用

    在android 中我们一般用 Handler 做主线程 和 子线程 之间的通信 。

    现在有了一种更为简洁的写法,就是 Activity 里面的 runOnUiThread( Runnable )方法。

    利用Activity.runOnUiThread(Runnable)把更新ui的代码创建在Runnable中,然后在需要更新ui时,把这个Runnable对象传给Activity.runOnUiThread(Runnable)。 

    Runnable对像就能在ui程序中被调用。如果当前线程是UI线程,那么行动是立即执行。如果当前线程不是UI线程,操作是发布到事件队列的UI线程。
    package com.app;
    
    import android.os.Bundle;
    import android.support.v7.app.AppCompatActivity;
    import android.widget.Toast;
    
    public class MainActivity extends AppCompatActivity {
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
    
            //创建一个线程
            new Thread(new Runnable() {
    
                @Override
                public void run() {
    
                    //延迟两秒
                    try {
                        Thread.sleep( 2000 );
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
    
                    runOnUiThread(new Runnable() {
                        @Override
                        public void run() {
                            Toast.makeText(MainActivity.this, "hah", Toast.LENGTH_SHORT).show();
                        }
                    });
    
                }
            }).start();
        }
    }
    

      

     Activity的runOnUiThread(Runnable)

        /**
         * Runs the specified action on the UI thread. If the current thread is the UI
         * thread, then the action is executed immediately. If the current thread is
         * not the UI thread, the action is posted to the event queue of the UI thread.
         *
         * @param action the action to run on the UI thread
         */
        public final void runOnUiThread(Runnable action) {
            if (Thread.currentThread() != mUiThread) {
                mHandler.post(action);
            } else {
                action.run();
            }
        }
    

      

  • 相关阅读:
    Swift无限滚动的FSPagerView
    Swift 中map、flatMap、compactMap、filer、reduce的使用总结
    Swift SnapKit自动布局的使用
    Swift UIScrollView懒加载的使用
    SwiftJson的使用
    SWIFT_VERSION '5.0' is unsupported, supported versions are: 3.0, 4.0...
    Swift 一个xib引用另外一个xib
    Swift xib或者storyboard添加圆角或者边框
    Swift使用Alamofire
    Swift中使用OC的类或者三方框架
  • 原文地址:https://www.cnblogs.com/zhaoyanjun/p/5483221.html
Copyright © 2011-2022 走看看