我总是创建两个处理程序:一个在主线程上包装,另一个在单个线程上包装。
这是在活动生命周期中启动和停止它们的最佳方法吗?
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();
}发布于 2019-03-25 20:07:21
我一直在关注这一点:
if (safeHandler!= null) {
final Looper looper = safeHandler.getLooper();
looper.quitSafely();
safeHandler = null;
}https://stackoverflow.com/questions/8907626
复制相似问题