В первый раз я вызываю HandlerThread.start() для обработки фоновой службы. после того, как все закончилось, я хочу закончить эту тему, вызвав HandlerThread.quit().Got IllegalThreadStateException при вызове HandlerThread.start() второй раз после HandlerThread.quit()
Затем во второй раз я запускаю этот обработчик и проверял HandlerThread.isAlive(), isAlive() возвращает false, но когда я снова вызываю HandlerThread с помощью HandlerThread.start().
Но я получил IllegalThreadStateException, почему?
Как я могу остановить HandlerThread, прежде чем я снова вызову handlerThread.start() безопасно?
спасибо, я уже знаю это, прочитав код comce google, потому что после этого thread.start() поток был отмечен и не может быть запущен снова. – Lee
Я также не понимаю, почему вы хотите остановить поток, поскольку петлитель HandlerThread будет продолжать обрабатывать сообщения, пока не будет сказано остановить. Если это не ваше намерение, в этом случае я должен спросить, почему вы пытаетесь остановить, а затем перезапустить петлитель? – Catch44
Если вы хотите остановить только петлитель (часть, где сообщения фактически обрабатываются) потока, то вы должны позвонить mCurrentLocationPresenter.getLooper(). Stop(); И перезапустить петлитель mCurrentLocationPresenter.getLooper(). Loop(); Из того, что я понимаю, вам не нужно перезапускать поток, вам нужно перезапустить петлитель в потоке. – Catch44