非主线程更新UI:Activity.runOnUiThread(Runnable)

练习心得

  • runOnUiThread是Activity的方法,其中的run方法会在UI线程中执行,如果是在主线程中调用则立即执行,如果是在异步线程中则将其放入Activity的EventQueue中
  • 用volatile修饰的变量如private static volatile int a = 2;是为解决多线程访问统一变量时的可见性问题(可见性:即保障每个线程获取的变量值都是最新的一致的,线程同步要解决的3个问题‘原子性’、‘可见性’、‘有序性’)

代码样例

/**
 * Created by Rambo 
 */

public class MyActivity extends MainActivity {

    private EditText myEditText = null;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_my);
        myEditText = (EditText) findViewById(R.id.myEditText);

        Thread otherThread = new Thread(new Runnable() {
            @Override
            public void run() {
                Log.v(TAG, "otherThread2:" + Thread.currentThread().getName());
                for (int index = 0; index < 5; index++) {
                    try {
                        Thread.sleep(1000);
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                    // 匿名内部类所引用的方法的局部变量要求是final的,是为防止内部类实例的生命周期大于局部变量的情况
                    // 定义为final后局部变量的生命周期等同域外部类变量
                    final int finalIndex = index;
                    /**
                     * activity的方法,其中的run方法会在UI线程中执行,如果是在主线程中调用则
                     * 立即执行,如果是在异步线程中则将其放入Activity的EventQueue中
                     */
                    runOnUiThread(new Runnable() {
                        @Override
                        public void run() {
                            Log.v(TAG, "runOnUiThread:" + Thread.currentThread().getName());
                            myEditText.setText(Integer.toString(finalIndex));
                        }
                    });
                }

            }
        });
        otherThread.start();
    }

}

执行Log日志如下:

运行日志
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 从三月份找实习到现在,面了一些公司,挂了不少,但最终还是拿到小米、百度、阿里、京东、新浪、CVTE、乐视家的研发岗...
    时芥蓝阅读 42,372评论 11 349
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 173,482评论 25 708
  • Kata04地址 第四个Kata,名字叫“Data Munging”,一看Data大家就知道了,这次是要处理数据。...
    梁杰_numbbbbb阅读 785评论 0 2
  • 回到相遇的地点 才知我对你不了解 以为爱得深就不怕伤悲 偏偏爱让心成雪 我独自走在寂寞的长街 回忆一幕幕重演 我告...
    赵小焕阅读 525评论 0 0
  • ❤ 闺蜜的姐姐,是个典型的集美貌与才华于一身的女神,不仅聪明,还特别努力。 闺蜜不经常跟我提起她姐姐,只是高中到现...
    秦东杰阅读 7,082评论 76 178