为了账号安全,请及时绑定邮箱和手机立即绑定

Android面试常客Handler详解

难度中级
时长 2小时 0分
学习人数
综合评分9.30
169人评价 查看评价
9.7 内容实用
9.3 简洁易懂
8.9 逻辑清晰
  • new Thread (){
        public void run(){//这个run方法是在子线程中
            try{
                Thread.sleep(1000);
                handler.post(new Runnable(){
                    @Override
                    public void run(){
                        textView.setText("updata thread");//这个run()方法是在主线程中的
                    }
                },1000);//使用Handler在主线程更新UI
            }catch(InterruptedException e){
                e.printStackTrace();
            }
        }
    }.start();


    查看全部
  • Android在设计的时候就封装了一套消息创建,传递,处理机制,如果不遵循这样的机制就没办法更新UI信息的,就会抛出异常信息

    查看全部
    0 采集 收起 来源:Handler是什么

    2018-09-24

  • Handler是Android给我们提供用来更新UI的一套机制,也是一套消息处理机制,我们可以用它来发送消息,也可以用它来处理消息

    查看全部
    0 采集 收起 来源:Handler是什么

    2018-09-24

  • android中更新ui四种方式

    runonui

    view.post(runable)

    handler.post()

    handler.sendmessage

    查看全部
  • 自定义线程处理handler方法:

    class MyThread extends Thread{
        public Handler handler;
        @Override
        public void run() {
            Looper.prepare();
            handler = new Handler(){
                @Override
                public void handleMessage(Message msg) {
                    System.out.print("currentThread:"+Thread.currentThread());
                }
            };
            Looper.loop();
        }
    }


    查看全部
  • 绑定了HandlerThread的Looper的Handler里面是可以更新ui的,也可以做耗时操作.它其实就是个线程,所以可以做耗时操作,除此之外由于在线程中调用了Looper.prepare()方法,所以绑定到了主线程从而可以更新UI了。这是我的理解不知道对不对,不过确实是可以更新UI也可以做耗时操作,我在代码中试过。


    查看全部
  • 非ui线程真的不能更新ui吗?答:某种情况下可以。
    在oncreate方法中开启子线程更新ui,在thread没有休眠的情况下,因为ViewRootImp在activity的onresume方法中创建,在ViewRootImp方法中判断当前线程是否为主线程,oncreate在onresume之前执行,所以这种情况下,可以进行更新ui操作。

    查看全部
  • 创建handle的时候会跟一个默认的线程绑定,线程中有一个Massagequeue

    查看全部
  • handler是android给我们提供的用来更新UI的一套机制,也是一套消息处理的机制,我们可以发送消息,也可以通过它来处理消息

    查看全部
    0 采集 收起 来源:Handler是什么

    2018-05-15

  • 可以利用有返回值的handleMassage方法截获发送来的消息,当handleMassage方法的返回值为true时,后面无返回值的handleMassage就不会执行了。

    查看全部
  • handler原理

    查看全部
  • handler原理

    查看全部
  • Handler实现图片轮播(循环播放) //实现图片切换    class MyRunnable implements Runnable {        @Override        public void run() {            index++;            index = index % 3;            imageView.setImageResource(images[index]);            handler.postDelayed(myRunnable,1000);        }    }        //实现更新textView文本文档 //        new Thread() { //            @Override //            public void run() { //                try { //                    Thread.sleep(1000); //                    handler.post(new Runnable() { //                        @Override //                        public void run() { //                            textView.setText("Update thread!"); //                        } //                    }); //                } catch (InterruptedException e) { //                    e.printStackTrace(); //                } //            } //        }.start();

    查看全部
  • 什么是handler

    handler就是官方提供的一套更新UI的机制 也是一套消息处理的机制

    查看全部
    0 采集 收起 来源:Handler是什么

    2018-03-27

  • --摘自评论区 使用handler时候常遇到的问题(系统抛出的异常): 1. android.view.ViewRootImpl$CalledFromWrongTreadException:Only the original thread that created a view hierarchy can touch its views 2. Can't create handler inside thread that has not called Looper.prepare() 在子线程中创建一个 Handler对象,却没有给它指定一个Looper对象的时候,就会抛出该异常。 如图是第一个异常抛出的原因:checkThread()判断“当前线程(更新UI的线程)是不是主线程”,如果不是,就抛出该异常。
    查看全部

举报

0/150
提交
取消
老师告诉你能学到什么?
通过本课程,你将学到: 1、什么是Handler 2、如何使用Handler 3、Handler的原理是什么 4、如何定义一个与线程相关的Handler 5、Android更新UI的几种方式 6、非UI线程真的不能更新UI吗 7、Handler使用过程中遇到的问题

微信扫码,参与3人拼团

意见反馈 帮助中心 APP下载
官方微信
友情提示:

您好,此课程属于迁移课程,您已购买该课程,无需重复购买,感谢您对慕课网的支持!