シリアルポートの入力ストリームをリスンするスレッドを作成します。 入力データが来たら、UIスレッドにメッセージを送りたい。UIスレッドにメッセージを送信
タスクを実行する前に、スレッドからメッセージを送信して、間隔が5000ミリ秒になり、UIスレッドにメッセージを送信しようとしました。Toast
ログからは、スレッドが作成され、正常に実行されていることがわかりましたが、番号はUIスレッドのtoasted
ではありません。
スレッドからUIスレッドにメッセージを送信できないか、UIスレッドのMessageQueue
でメッセージを処理できないことが原因だと思います。
私のコードで何が問題になっていますか? 多くの感謝!
MainActivity.java:
public class MainActivity extends Activity {
...
@Override
protected void onCreate(Bundle savedInstancesState) {
...
setMessageProcessor();
SerialPortListener.start();
}
private void setMessageProcessor() {
new Handler(Looper.getMainLooper()) {
public void handleMessage(Message msg) {
Toast.makeText(MainActivity.this,
"Message: " + msg.obj.toString(),
Toast.LENGTH_SHORT).show();
}
};
}
}
SerialPortListener.java:
public class SerialPortListener {
...
private static int testNumber = 1;
public static void start() {
...
Thread thread = new Thread(new Runnable() {
@Override
public void run() {
while (true) {
Message msg = new Message();
msg.obj = testNumber++;
new Handler(Looper.getMainLooper()).sendMessage(msg);
Log.i("TEST", "TEST);
try {
Thread.sleep(5000);
} catche(Exception e) {
...
}
}
}
});
thread.start();
}
}
関連:http://stackoverflow.com/questions/4369537/update-ui-from-thread – k3b