解决方案 »

  1.   

    handler.post(new Runnable()
            {
                
                @Override
                public void run()
                {
                    System.out.println(Looper.myLooper().getThread()+"post");
                    textView.setText("alreadly changed");
                }
            });各位大神求指教啊,new 一个runnable不是开启一个新线程么,为什么在这就不适用了呢。通过打印可以得出还是运行在main线程里面,也能更新UI主键。为啥是这样呢,为啥呢??
    我也不知道,帮你顶一下吧
      

  2.   

    谁告诉你new Runnable()是开新线程的?
      

  3.   

    java里面不都是这样,开线程要么是new一个thread要么是实现new Runnable接口
      

  4.   

    我也是新手,我的理解是handler.post是在线程需要用主线程执行代码段时使用,实现与主线程的同步,post下的代码在主线程中执行,不知道对不对
      

  5.   

    找了下资料,原来handler.post还真不是开新线程message.callback.run();最后handler的调用是run方法不是start方法。
    但是这样又有一个问题了,post的意义何在?既然不是新线程直接在主线程做这些操作就可以了啊,为啥还弄个post方法?
      

  6.   

    我的理解是这个post就是和ui线程打交道的快速通道,因为很多时候handler都不是主线程里面,用post就能快速更新UI界面了。
      

  7.   

    Handler是绑定到创建它的主线程中的,Handler跟UI主线程是同一个线程。Handler的作用:主要是在其他后台线程中,通过handler这个媒介,向UI主线程发送Runnable对象(即代码段)
      

  8.   

      textView.setText("alreadly changed");
    不能再异步线程里面更新ui界面
      

  9.   

    handler.post应该是在主线程下执行的 ,不是另外新开线程 我觉得
      

  10.   

    handler.post应该是在主线程下执行的 
      

  11.   

    你需要修改handler默认的looper.