这是一个prefect办法阻止handlerthread? [英] Is this a prefect way to stop handlerthread?
本文介绍了这是一个prefect办法阻止handlerthread?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我总是创建两个处理器,一个是包木窗在主线程,一个是包木窗上一个单独的线程, 这是启动并在活动周期停止这些??一个最好的方法
HandlerThread safeThread = NULL;
处理器safeHandler = NULL;
处理程序处理程序= NULL;
@覆盖
公共无效的OnStart(){
如果(safeThread == NULL){
safeThread =新HandlerThread(safeThread);
safeThread.start();
safeHandler =新的处理程序(safeThread.getLooper());
}否则,如果(safeThread.getState()== Thread.State.NEW){
safeThread.start();
safeHandler =新的处理程序(safeThread.getLooper());
}否则,如果(safeThread.getState()== Thread.State.WAITING){
safeHandler =新的处理程序(safeThread.getLooper());
}否则,如果(safeThread.getState()== Thread.State.TERMINATED){
safeThread = NULL;
safeThread =新HandlerThread(safeThread);
safeThread.start();
safeHandler =新的处理程序(safeThread.getLooper());
}
}
保护无效的onStop(){
Log.d(×,的onStop被执行);
safeHandler = NULL;
safeThread.quit();
safeThread.interrupt();
safeThread = NULL;
super.onStop();
}
解决方案
使用此作为其安全地停止线程。
如果(safeThread!= NULL){
螺纹垂死= safeThread;
safeThread = NULL;
moribund.interrupt();
}
i always create two handler , one is wraping on main thread , one is wraping on a single thread, is this a best method to start and stop these in a activity lifecycle ??
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();
}
解决方案
Use this as its safe way to stop thread.
if(safeThread!= null){
Thread moribund = safeThread;
safeThread = null;
moribund.interrupt();
}
这篇关于这是一个prefect办法阻止handlerthread?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文