Creo sempre due gestori: uno sta eseguendo il wrap sul thread principale, un altro è il wraping su un singolo thread.È questo un modo perfetto per fermare il handlerthread?
È questo un metodo ottimale per avviare e arrestare questi in un ciclo di vita di attività?
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(); è il modo migliore per fermare thread – Sameer
sì, lo so, ma io penso che questo è sicuro quando io dopo interrompere e null questo. – rex
ho dato una risposta..una cosa ti suggerisco come sei nuovo su stackoverflow.IF vuoi apprezzare qualcuno aiuto poi dargli un voto e se pensi che la risposta sia meglio allora contrassegnala come risposta .. :) benvenuto e applausi – Sameer