这是一个prefect办法阻止handlerthread? [英] Is this a prefect way to stop handlerthread?

查看:109
本文介绍了这是一个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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆