Siempre creo dos controladores: uno es wraping en el hilo principal, otro es wraping en un solo hilo.¿Es esta una forma perfecta de detener handlerthread?
¿Es este el mejor método para iniciar y detener estos en un ciclo de vida de la actividad?
HandlerThread safeThread = null;
Handler safeHandler = null;
Handler handler = null;
@Override
public void onStart() {
if (safeThread == null) {
safeThread = new HandlerThread("safeThread");
safeThread.start();
safeHandler = new Handler(safeThread.getLooper());
} else if (safeThread.getState() == Thread.State.NEW) {
safeThread.start();
safeHandler = new Handler(safeThread.getLooper());
} else if (safeThread.getState() == Thread.State.WAITING) {
safeHandler = new Handler(safeThread.getLooper());
} else if (safeThread.getState() == Thread.State.TERMINATED) {
safeThread = null;
safeThread = new HandlerThread("safeThread");
safeThread.start();
safeHandler = new Handler(safeThread.getLooper());
}
}
protected void onStop() {
Log.d("x", "onStop is executed");
safeHandler = null;
safeThread.quit();
safeThread.interrupt();
safeThread = null;
super.onStop();
}
safeThread.interrupt(); es la mejor manera de detener el hilo – Sameer
sí, lo sé, pero estoy pensando en esto es seguro cuando después de interrumpir y anular esto. – rex
he dado respuesta ... una cosa que te sugeriría, ya que eres nuevo en stackoverflow. Si quieres agradecer a alguien, entonces dale un voto y si crees que la respuesta es mejor, márcalo como respuesta ... :) bienvenido y cheers – Sameer