음성인식 api 재시작 관련 문의드립니다

Fatal Exception: java.lang.NullPointerException
Attempt to invoke virtual method ‘void java.lang.Thread.join()’ on a null object reference
com.dialoid.speech.recognition.SpeechReaderManager.stop (SpeechReaderManager.java:167)
com.dialoid.speech.recognition.SpeechRecognizer.handleOnEndPointDetect (SpeechRecognizer.java:952)

음성인식 서비스를 재시작하면 간헐적으로 이런 오류가 나오네요.

 @Override
    public void onReady() {
        //TODO implement interface DaumSpeechRecognizeListener method
    }

    @Override
    public void onBeginningOfSpeech() {
        //TODO implement interface DaumSpeechRecognizeListener method
    }

    @Override
    public void onEndOfSpeech() {
        //TODO implement interface DaumSpeechRecognizeListener method
    }

    @Override
    public void onError(int errorCode, String errorMsg) {
        //TODO implement interface DaumSpeechRecognizeListener method
       if(client!=null) {
            client.cancelRecording();
            client.startRecording(true);
        }else{

        }
        //client = null;
    }

    @Override
    public void onPartialResult(String text) {
        //TODO implement interface DaumSpeechRecognizeListener method
    }
    boolean isin =false;
    @Override
    public void onResults(Bundle results) {
        final StringBuilder builder = new StringBuilder();
        Log.i("SpeechSampleActivity", "onResults");
        ArrayList<String> texts = results.getStringArrayList(SpeechRecognizerClient.KEY_RECOGNITION_RESULTS);
        ArrayList<Integer> confs = results.getIntegerArrayList(SpeechRecognizerClient.KEY_CONFIDENCE_VALUES);
        //boolean isIn = false;
        for (int i = 0; i < texts.size(); i++) {
           if(CommonUtils.getSutterText(context).equals(texts.get(i))){
               isin = true;
               break;
           }
        }
        if(isin){
            shoot();
          
        }else{
            if(client!=null) {
            }
        }
    }

    @Override
    public void onAudioLevel(float v) {
        //TODO implement interface DaumSpeechRecognizeListener method
    }

    @Override
    public void onFinished() {
       if(!isin) {
           client.startRecording(true);
       }
    }

이런식으로 재시작을 하고있거든요
혹시 음성인식 재시작에 관련해서 가이드가 있는지요?

네, 일단 onError안에서 재시작을 하지마시고,
이벤트만 하나 발생시키시고, 그걸 받아서 재시작을 하는것을 권장드리고요.
cancel 이나 stop 속에 instance를 null로 바꿔주는 부분이 있으니,
initialize를 다시 해주시는데 약간의 delay를 주고 재생성 하시는게 안전합니다.
(멀티스레드 레이싱 컨디션때문에… 휴대폰 사양이 낮을때 문제가 될수 있으니,
100ms정도 딜레이를 주고 재시작해주는게 안전합니다. )