いくつかのデバッグの後、既存の製品コードで次のことがわかりました。
public class SomeTTS {
private static TTSSpeechListener mSpeechListener;
private static TTSBreakListener mBreakListener;
// more static (!!!) listeners
private String mPath;
public TTS(String path, TTSSpeechListener speechListener)
throws RuntimeException {
// ...
mSpeechListener = speechListener;
mBreakListener = null;
// more listeners set to null
// ...
}
// called from NATIVE code that I cannot change
private static void onReceiveSpeechData(byte[] samples) {
mSpeechListener.onSpeechData(samples);
}
// ...
}
このクラスは、ネイティブ ライブラリ (Android、NDK、JNI) のラッパーです。ネイティブ ライブラリ ソースにアクセスできません。(もちろん、問題はわかります。 の 2 番目のインスタンスを作成した後SomeTTS
、1 番目のインスタンスはもう機能しません。) 私は少しショックを受けています。男子生徒以外からこのようなバグが発生するとは思いません。おそらく彼らは児童労働を利用していたのでしょう。あるいは、誰かがデモ コードと製品コードの違いをマネージャーに説明できなかった可能性が高いです。
とにかく、私はそれを機能させる必要があります。いくつかの考えはありますが、現時点で提案できることは完璧にはほど遠いものです。それをリファクタリングする方法はありますか?