小樱知识 > 生活常识android线程间通信有哪些方式(android进程间通信方式讲解)

android线程间通信有哪些方式(android进程间通信方式讲解)

提问时间:2022-03-11 09:13:50来源:小樱知识网


1,通过Handler机制.主线程中定义Handler,子线程发消息,通知Handler完成UI更新,Handler对象必须定义在主线程中,如果是多个类直接互相调用,就不是很方便,需要传递content对象或通过接口调用。

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();    }

2,runOnUiThread方法

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

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();    }

3,View.post(Runnable r)

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

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();    }

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());        }    }

以上内容就是为大家推荐的android线程间通信有哪些方式(android进程间通信方式讲解)最佳回答,如果还想搜索其他问题,请收藏本网站或点击搜索更多问题

内容来源于网络仅供参考
二维码

扫一扫关注我们

版权声明:所有来源标注为小樱知识网www.xiaoyin02.com的内容版权均为本站所有,若您需要引用、转载,只需要注明来源及原文链接即可。

本文标题:android线程间通信有哪些方式(android进程间通信方式讲解)

本文地址:https://www.xiaoyin02.com/shcs/99268.html

相关文章