美文网首页
android线程间通信的四种实现方式(转载)

android线程间通信的四种实现方式(转载)

作者: Margaret_lhp | 来源:发表于2019-07-11 16:22 被阅读0次

1,通过Handler机制.

private void one() {

        handler=new Handler(){

            @Override

            public void handleMessage(Message msg) {

                super.handleMessage(msg);

                switch (msg.what){

                    case 123:

                        tv.setText(""+msg.obj);

                        break;

                }

            }

        };

        new Thread(){

            @Override

            public void run() {

                super.run();

                for (int i=0;i<3;i++){

                    try {

                        sleep(1000);

                    } catch (InterruptedException e) {

                        e.printStackTrace();

                    }

                }

                Message message=new Message();

                message.what=123;

                message.obj="通过Handler机制";

                handler.sendMessage(message);

            }

        }.run();

    }

主线程中定义Handler,子线程发消息,通知Handler完成UI更新,Handler对象必须定义在主线程中,如果是多个类直接互相调用,就不是很方便,需要传递content对象或通过接口调用。另外Handler机制与Activity生命周期不一致的原因,容易导致内存泄漏,不推荐使用。

2,runOnUiThread方法

private void two(){

        new Thread(){

            @Override

            public void run() {

                super.run();

                for (int i=0;i<3;i++){

                    try {

                        sleep(1000);

                    } catch (InterruptedException e) {

                        e.printStackTrace();

                    }

                }

                runOnUiThread(new Runnable() {

                    @Override

                    public void run() {

                        tv.setText("通过runOnUiThread方法");

                    }

                });

            }

        }.run();

    }

用Activity对象的runOnUiThread方法更新,在子线程中通过runOnUiThread()方法更新UI,强烈推荐使用。

3,View.post(Runnable r) 、

private void three(){

        new Thread(){

            @Override

            public void run() {

                super.run();

                for (int i=0;i<3;i++){

                    try {

                        sleep(1000);

                    } catch (InterruptedException e) {

                        e.printStackTrace();

                    }

                }

                tv.post(new Runnable() {

                    @Override

                    public void run() {

                        tv.setText("通过View.post(Runnable r) 方法");

                    }

                });

            }

        }.run();

    }

这种方法更简单,但需要传递要更新的View过去,推荐使用

4,AsyncTask

private void four(){

        new MyAsyncTask().execute("通过AsyncTask方法");

    }

private class MyAsyncTask extends AsyncTask{

        @Override

        protected Object doInBackground(Object[] objects) {

            for (int i=0;i<3;i++){

                try {

                    sleep(1000);

                } catch (InterruptedException e) {

                    e.printStackTrace();

                }

            }

            return objects[0].toString();

        }

        @Override

        protected void onPostExecute(Object o) {

            super.onPostExecute(o);

            tv.setText(o.toString());

        }

    }

---------------------

作者:流星雨在线

来源:CSDN

原文:https://blog.csdn.net/liuxingyuzaixian/article/details/78893392

版权声明:本文为博主原创文章,转载请附上博文链接!

相关文章

  • Android线程间通信

    android线程间通信的四种实现方式 通过Handler机制 子线程与子线程之间通信 unOnUiThread方...

  • android线程间通信的四种实现方式(转载)

    1,通过Handler机制. private void one() { handler=new Handl...

  • android线程间通信

    android线程间通信四种方式: 1,通过Handler机制 主线程中定义Handler,子线程发消息,通知Ha...

  • Android 功能实现原理(b)

    1、Handler机制和底层实现 机制:hanlder是android线程间通信的一种实现,以消息队列的方式实现线...

  • Android线程间通信方式

    一般说线程间通信主要是指主线程(也叫UI线程)和子线程之间的通信,主要有以下两种方式: 1.AsyncTask机制...

  • handler全家桶

    handler是android中实现线程之间通信的方式之一,他的原理值得我们了解。 handler的通信实现原理离...

  • Android 面试常问知识

    Q1:线程间的通信进程间通信的几种方式进程间通信方式详解Q2:线程安全SharePreferences 是否线程安...

  • EventBus 3.0使用

    EventBus可以实现组件间通信,线程通信,比较方便灵活,2.x和3.0差别很多。 Android Studio...

  • 2017.12.27三题

    1.Android线程间通信有哪些方式? 共享变量(内存) 管道 handler机制:runOnUiThread(...

  • Handler消息机制和ThreadLocal原理

    一、简介 Handler作为Android线程间通信的常用方式,主要由Handler、Looper、Message...

网友评论

      本文标题:android线程间通信的四种实现方式(转载)

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