解决方案 »

  1. 还有个问题:
    class MyHandler extends Handler{
    public MyHandler(){public MyHandler(Looper looper){
    super(looper);
    }  1.这里为什么还要调用Handler的super(looper),调用这个有什么用?  
    再说myHandler 不是已经获得了handlerThread的looper了吗?2.这其实是在调用handlerThread的 looper,然后myhandler就是用looper所在的线程里面的数据?就达到开启新线程的目的了吗?
      

  2. 构造函数的两个重载形式而已。
    不带 Looper 参数的,默认取构造 Handler 实例时所在(当前)线程的 Looper。
    带 Looper 参数的,可以指定一个 Looper 来绑定 Handler 。
    Looper 实际上会开启一个事件循环,而 Handler 必须和事件循环绑定,否则不能使用。
    博文决赛,投我一票,谢谢。
      

  3. 非UI线程(工作线程)只有调用了 Looper.prepare()/Looper.loop(),才有自己的事件循环,才可以使用属于本线程 Handler 。
      


  4. 这里是那个looper绑定哪个handler?
    不带 Looper 参数的,默认取构造 Handler 实例时所在(当前)线程的 Looper。? 这话怎么理解?
      

  5. looper是和消息队列通信用的, 从消息队列里取消息进行处理
    主线程里自带一个looper,所以主线程会一直运行,处理事件。默认你弄得线程是取主线程的looper的。不过如果你要想要一个线程一直运行,去时不时地处理些数据, 就要给他个looper,调用prepare初始化消息队列, 然后loop, 这样你往这个线程发送个message,就进入它的消息队列, 然后这个线程就可以通过消息循环取出来给你处理数据了。我也一知半解不知道说的对不对哈。。
      


  6. 那这里构造方法中的 super(looper) 中的looper就是主线程的吗?  就相当于我新建一个线程 然后里面的Handler就接受了主线程的looper中的消息后,再根据自己的代码来处理looper中的消息咯?      处理完后在返回给主线程?  这样就是多线程异步? 
      

类似问题 »