Непрерывно чтение буфера останавливает приложение - PullRequest
0 голосов
/ 27 апреля 2011

Мое приложение получает бесконечный поток данных с устройства Bluetooth.Я читаю этот поток в цикле while (true) и вижу прочитанные данные в моем журнале.Проблема в том, что мое устройство больше не отвечает.Есть (надеюсь) простой способ позволить приложению читать поток в фоновом режиме?

Спасибо!Кристиан.

@ boulder: Извините, я не совсем понимаю этот класс AsynkTask.:( Можете ли вы помочь мне с этим кодом, поместив его в фоновом режиме? Большое спасибо!

                try {
                while (true) 
                {               
                    read = isBT.read(msgBuffer);
                    connected = true;
                    StringBuilder strBuffer = new StringBuilder();
                    for (int i = 0; i<read; i++) 
                    {
                        int b = msgBuffer[i];
                        strBuffer.append(b);
                    }
                    Log.d(TAG,"++++++ Read "+ read + " Bytes: " + strBuffer.toString());
                }
            }
                catch (IOException e) {
                    Log.d(TAG," +++ IOException ++++", e);
                }

1 Ответ

1 голос
/ 27 апреля 2011

Может быть, это будет полезно http://android -developers.blogspot.com / 2009/05 / painless-threading.html

Пример обработчика:

private static final String CONTENT_TAG = "content";

// Call this from datastream thread to post data 
private void postProgress(String aBufferContent) {
    // Wrapping data in bundle
    final Bundle bundle = new Bundle();
    bundle.putString(CONTENT_TAG, aBufferContent);

    // Sending message to handler
    final Message message = mProgressHandler.obtainMessage();
    message.setData(bundle);
    mProgressHandler.sendMessage(message);
}

// This will be executed in UI thread. Do you GUI update job here
private final Handler mProgressHandler = new Handler() {
    public void handleMessage(Message msg) {
        final String streamContent = msg.getData().getString(CONTENT_TAG);
        myTextView.setText(streamContent);
    }
};
...