Helo.
Я занимаюсь разработкой приложения, которое передает данные через Bluetooth (с устройством записи полета). Когда я получаю много данных (3000 - 40000 строк текста, в зависимости от размера файла), мое приложение перестает получать данные. Я получаю данные с InputStream.read (буфер). Например: я посылаю команду на бортовой регистратор, он начинает посылать мне файл (строка за строкой), на моем телефоне я получаю 120 строк, а затем приложение зависает.
Интересно, что на моем HTC Desire приложение зависает только иногда, на телефоне Samsung Galaxy S приложение зависает каждый раз, когда я пытаюсь получить более 50 строк.
Код основан на примере BluetoothChat. Это часть кода, где я слушаю BluetoothSocket:
byte[] buffer = new byte[1024];
int bytes =0;
while(true)
{
bytes = mmInStream.read(buffer);
readMessage = new String(buffer, 0, bytes);
Log.e("read", readMessage);
String read2 = readMessage;
//searching for the end of line to count the lines(the star means the start of the checksum)
int currentHits = read2.replaceAll("[^*]","").length();
nmbrOfTransferedFligts += currentHits;
.
.
.
//parsing and saving the recieved data
Я должен сказать, что я выполняю это в цикле while (true), в потоке, который реализован в службе Android. Приложение, похоже, застряло на "bytes = mmInStream.read (buffer);"
Я пытался сделать это с BufferedReader, но безуспешно.
Спасибо.