2016-07-28 9 views
0

私はAndroidで新しいです。別のスレッド(SenderThread)を実行しようとしています。そのスレッドは、ボタンが押されたときにUDPソケット内に200ミリ秒ごとに文字列を送信しようとします。 UIスレッドでAndroid私はどのように私は仕事のスレッドでbutton.isPressed()を呼び出すことができます

if(myButton.isPressed()) 
{ 
} 

ではなく:

は、だから私の質問は、私のような何かを行うことができる方法ですか?


可能であれば、UIスレッドでOnCreateメソッドでSenderThreadを開始したいと考えています。

そして、SenderThreadでは、ボタンが押されると200msごとに確認します。今のあなたonClick()方法で次に

private boolean isButtonClicked = false; 

isButtonClicked = true;

を作り、:それはあるならば、私は他の私は、あなたがこのようないくつかのブール・パラメータを作成する必要が200msの

+0

ボタンをクリックしてスレッドを開始しますか? –

答えて

1

使用runOnUiThread

final Button myButton =(Button)findViewById(R.id.my_button);

この記事では、公式のAndroidデベロッパーのウェブサイト上のよう
runOnUiThread(new Runnable() { 
       public void run() { 
        if(myButton.isPressed()) 
        { 
        } 

       } 

      }); 
0

を待って、UDP経由で文字列を送信しますあなたがチェックすることができ、あなたのスレッドがクリックされたボタンです:あなたthread内部

if (isButtonClicked) { 
    // button is clicked 
} else { 
    // button is not clicked 
} 
+0

'volatile 'にするか、' AtomicBoolean'を使う必要があります。それ以外の場合は動作しません –

0

https://developer.android.com/training/multiple-threads/communicate-ui.htmlあなたは、いくつかのオプションを持っています。

オプション1:

mHandler = new Handler(Looper.getMainLooper()) {} 

オプション2:あなたはAsyncTaskを使用することができ、バックグラウンドで実行されているほとんどのものに適していますあなたは、このようなUIスレッドに添付されたハンドラを定義します。進行状況を示すために呼び出すことができるフックがあります。

オプション3: Activity.runOnUiThread()を使用することもできます。

関連する問題