mHandlerThread.quit();
эта строка кода просто выйдет из петли потока обработчика, это не значит, что она немедленно завершает поток, потому что вы публикуете сообщение, которое выполняется в цикле while. Если сообщение в то время как цикл не останавливается, mHandlerThread не остановится навсегда. так что вы можете изменить свой код следующим образом:
mHandler.post(() -> {
try {
String line;
while (!mHandlerThread.isInterrupted && (line = mBufferedReader.readLine()) != null)
{
...
}
mBufferedReader.close();
} catch (IOException e) {
e.printStackTrace();
}
});
просто добавьте !mHandlerThread.isInterrupted()
как объединенное условие цикла.
Кстати, вам не нужен вызов:if (mHandler != null) {
mHandler.getLooper().quit();
}
но mHandlerThread.interrupt();
необходимо!