android线程通信的几种方式_java多线程的实现方式

android线程通信的几种方式_java多线程的实现方式1,通过Handler机制.privatevoidone(){handler=newHandler(){@OverridepublicvoidhandleMessage(Messagemsg){super.handleMessage(msg);

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE稳定放心使用

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

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/184896.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • Python:Python学习总结

    Python:Python学习总结背景PHP的$和->让人输入的手疼(PHP确实非常简洁和强大,适合WEB编程),Ruby的#、@、@@也好不到哪里(OO人员最该学习的一门语言)。Python应该是写起来最舒服的动态语言了,一下

  • 分页插件

    分页插件分页插件介绍分页可以将很多条结果进行分页显示。如果当前在第一页,则没有上一页。如果当前在最后一页,则没有下一页。需要明确当前是第几页,这一页中显示多少条结果。MyBatis分页插件总结在企业

  • 第七章:同步类容器,vector 线程安全与hashmap线程不安全等的举例

    第七章:同步类容器,vector 线程安全与hashmap线程不安全等的举例第七章:同步类容器,vector 线程安全与hashmap线程不安全等的举例

  • JAVA的垃圾回收机制_java的内存回收机制

    JAVA的垃圾回收机制_java的内存回收机制一:垃圾回收机制的意义java语言中一个显著的特点就是引入了java回收机制,是c++程序员最头疼的内存管理的问题迎刃而解,它使得java程序员在编写程序的时候不在考虑内存管理。由于有个垃圾回收机制,java中的额对象不在有“作用域”的概念,只有对象的引用才有“作用域”。垃圾回收可以有效的防止内存泄露,有效的使用空闲的内存;内存泄露:指该内存空间使用完毕后未回收,在不涉及复杂数据结构的一般…

    2022年10月10日
  • VS2013 下载地址

    VS2013 下载地址VS2013下载链接http://download.microsoft.com/download/8/1/F/81FE1D40-2658-4CC5-8699-85D8377B35B9/vs2013.4_ult_chs.iso

  • 编程实用工具大全(前后端皆可用,不来瞅瞅?)

    编程实用工具大全(前后端皆可用,不来瞅瞅?)从事:Python,前端,Java,C,C++,R,Javascript,C#,Matlab,Swift,Go,数据库等领域的都适合。目录1.Snipaste2.命名神器codelf3.渐变色神器4.CSS阴影效果神器5.数据结构可视化6.Buttons7.CSS在线设计按钮8.颜色码转换工具9.HTML颜色代码10.HTTP状态代码11.Iconfont矢量图标库12.JSON字符串格式化13.数据库大全个人主页:…

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号