2017-01-04 19 views
0

私がボタンを持っていると私はonClickにデバッガを設定しているスレッドはonClickListener()

playPauseButton.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 
      new Thread(new Runnable() { 
       @Override 
       public void run() { 
        Socket s; 
        PrintWriter writer; 
        for (int i = 0 ; i < openClientSockets.size() ; i += 1) { 
         s = openClientSockets.get(i); 
         try { 
          writer = new PrintWriter(s.getOutputStream()); 
          writer.print("play"); 
          writer.flush(); 
          writer.close(); 
         } catch (IOException e) { 
          e.printStackTrace(); 
         } 
        } 
       } 
      }).start(); 
     } 
    }); 

次のように私はonClickListener()を設定していたの内側に起動しません。それは解雇されますが、スレッドは開始しません。

正しい方向に指摘してください。

+0

mmmスレッド内にブレークポイントを設定すると、スレッドは停止しません。ログについてはどうですか?何らかの例外がスローされますか? – Lino

+0

デバッグポイントを実行メソッドに配置します。 –

+0

例外がスローされていません(logcatを参照) – Shantanu

答えて

1

デバッガは、ブレークポイントが設定されているスレッドを停止するだけです。 したがって、2番目のスレッドが機能しているかどうかを確認するには、run()メソッドでブレークポイントを設定する必要があります。

+0

私は2つのブレークポイントを入れました.1つはonclickの中に、もう1つはrunメソッドの中に入れました。デバッガはrunメソッド内で停止しません。 – Shantanu

+0

'yourThread.start()'を 'yourThread.run()'に置き換えることもできます – beal

+0

これは新しいスレッドを開始しません。代わりに、これは単にスレッドの 'run()'メソッドを呼び出します。 – Shantanu