Я пытаюсь отправить тестовые сообщения от Arduino через bluetooth, отправив спам «привет мир!». каждые 100 мс. Теперь, на андроиде у меня есть бесконечное дополнение «привет мир!». к моему StringBuilder и каждой итерации отладки у меня есть «привет мир! \ nhello world! \ nhello world! \ n ...» и т. д. Что мне делать? Как идея, я буду спамить много Jsons от arduino до устройства Android. Должен ли я сделать некоторые специальные последовательности символов для разделителей, чтобы разбить их после каждого сообщения от arduino? Или есть более простое решение?BufferedReader бесконечно добавляет readLine()
public static String toString(InputStream inputStream) throws IOException {
byte[] bs = new byte[inputStream.available()];
if (Utils.isZero(bs.length)) {
return "";
}
BufferedReader r = new BufferedReader(new InputStreamReader(inputStream));
StringBuilder total = new StringBuilder();
String line;
while (r.ready()) {
line = r.readLine();
total.append(line).append('\n');
}
return total.toString();
}
Что вы подразумеваете под словом "break the while"? «разделители»? Прямо сейчас у вас есть 'StringBuilder' (а не https://docs.oracle.com/javase/8/docs/api/java/io/StringWriter.html?), Содержащий несколько строк текста, что кажется неплохим , так зачем его менять? Кроме того, вы должны держать область «линии» внутри цикла; снаружи слишком широк. Я предполагаю, что недостаток обработки закрытых или исключений для краткости. Использование «available()» не является необходимым и немного рискованным. Смешивание байтов и символов рискованно. Что у вас сейчас, что вам не нравится? –
StringBuilderObj.setLength (0), чтобы очистить, если это то, что вы пытаетесь сделать .. Ваша проблема очень неопределенная – DarkV1
Я сказал, что я спам сообщения от arduino, и это бесконечный InputStream. Бесконечный. он всегда добавляет и добавляет и добавляет к нему. Это никогда не закончится – user2976267