0

というスレッドがありますDataInputstreamThreadDataInputstreamThreadBluetooth デバイスから入力を取得します。

textboxaを使用して、入力ストリームから処理されたデータを a に追加したいと考えていrunOnUiThreadます。しかし、これはうまくいきません。runOnUiThread毎回スキップされます。

コード::

public void getDataFromInputStream() {

    DataInputstreamThread = new Thread(new Runnable() {
        public void run() {


            threadFlag = connectDevice();
            while (threadFlag) {
                try {
                    if (inputStream == null) {
                        inputStream = bluetoothSocket.getInputStream();
                    }

                    bytesAvailable = inputStream.available();
                    if (bytesAvailable > 0) {
                        byte[] packetBytes = new byte[bytesAvailable];
                        inputStream.read(packetBytes);

                        for (int i = 0; i < bytesAvailable; i++) {

                            if (packetBytes[i] != 13) {
                                temp = new String(packetBytes);

                            } else {
                                delimiter = true;
                            }

                        }

                        fin += temp;//I have a breakpoint here, and i know this is executed


                        activity.runOnUiThread(new Runnable() {
                            public void run() {
                             notifyObservers(fin);//I have breakpoint here, and this line is not executed.
                            }
                        });

                        if (delimiter) {

                            fin = "";
                            delimiter = false;
                        }

                    }


                } catch (Exception e) {

                }

            }

            nullify();
        }

    });
    DataInputstreamThread.start();
}

では、なぜrunOnUiThread実行されていないのでしょうか。

4

2 に答える 2

3

これはあなたが尋ねた質問に直接答えるものではありませんが、問題の原因が見つからない理由を説明しています。

これ:

catch (Exception e) {

}

バグを見つけるという希望を台無しにしています。例外を飲み込むため、runOnUiThreadスローされる可能性のあるエラーは表示されません。あなたは当て推量をするために残されています。

そこで役に立つことをしてください。少なくとも、例外スタック トレースを LogCat に出力します。それでもバグが見つからない場合は、ここに戻って質問を延長してください。

于 2013-09-09T09:23:38.493 に答える