解决方案 »

  1.   

     Handler handler=new Handler(); 
     handler.post(r);//这个是UI线程执行
      

  2.   

    但是
       public void run(){
                 
                progressBar.incrementProgressBy(5);
            }
    怎么解释??他不是在一个新的线程中跑的吗?
      

  3.   

    但是
       public void run(){
                 
                progressBar.incrementProgressBy(5);
            }
    怎么解释??他不是在一个新的线程中跑的吗?它只是一个Runnable,而不是一个Thread
      

  4.   

    没记错的话,progressBar是仅有的几个可以在子线程中更新的UI组件之一,所以可以直接更新……我怎么觉得继承Thread和implements Runnable都代表一个线程类,没有本质区别呢……
      

  5.   

    但是
       public void run(){
                 
                progressBar.incrementProgressBy(5);
            }
    怎么解释??他不是在一个新的线程中跑的吗?它只是一个Runnable,而不是一个Thread
    那么runnable  和Thread的区别在哪里呢???
      

  6.   

    有run方法不代表就是新线程
    thread是带有run方法的线程
      

  7.   

    子线程不能更新UI?那什么可以更新UI?求教另,你这个runnable是交给handerloop去处理的,不存在堵塞UI线程的问题
      

  8.   


    我来给你解释一下吧!看看你的 Thread 里面的handler,是在调用什么函数?
    调用的是post函数吧,里面传递的是一个runnable 接口(你懂得 runnable 可不是一个线程这个你一定要和thread 区分开) 
    再来看看 post 里面的具体实现 他调用的是sendMessageDelayed(getPostMessage(r), 0) 看到这个 getPostMessage(r) 了么 里面的实现实际上是把r 作为了Message 的 回调函数 做种调用的还是handler.sendMessage 只不过这里的what 和 obj 没有做具体实现而是直接调用了Message 里面的callback (你可以看看Message 里面确实存在callback这个属性)
      

  9.   

    主线程也是线程呢。
    子线程也是线程。
    所以都用runnable方法不奇怪啊。