解决方案 »

  1.   

    hanlder 是在主线程中执行的,所以当你执行 handler.post 的时候,就是在主线程执行,你可以使用  new Thread(runnable).start()来执行
      

  2.   

    handler.post(runnable)的意思是在handler所在的线程环境中执行runnable。
    而handler所在的线程环境就是执行new Handler()所在的线程环境。
    你是在主线程也就是UI线程里执行Handler handler = new Handler(),所以结果就是你在UI线程里去访问网络了。你的代码只要改成这样就可以了:private View.OnClickListener listener = new View.OnClickListener() {
    @Override
    public void onClick(View view) {
    new Thread(runnable).start();
    }
    };
      

  3.   


    原来如此,这样可以了,多谢,看来还是得多了解了解handler和message的机制啊。