我正在通过 TCP/IP 发出网络请求并在单独的线程上监听响应。每次进行网络调用时,我都想停止前一个正在监听响应的线程并创建一个新线程。
不幸的是,旧的 HandlerThread 在开始新的之前没有被终止。
if (mHandler != null) {
mHandler.getLooper().quit();
}
if (mHandlerThread != null) {
mHandlerThread.interrupt();
mHandlerThread.quit();
}
mHandlerThread = new HandlerThread("socket-reader-thread");
mHandlerThread.start();
mHandler = new Handler(mHandlerThread.getLooper());
mHandler.post(() -> {
try {
String line;
while ((line = mBufferedReader.readLine()) != null) // BLOCKING CALL
{
...
}
mBufferedReader.close();
} catch (IOException e) {
e.printStackTrace();
}
});
有没有办法终止这些HandlerThread
s?