我并没有在代码中的任何地方实例化AndroidHttpClient,但是我确实启动了一个识别器意图,在应用程序运行时产生这个异常:
Leak found
java.lang.IllegalStateException: AndroidHttpClient created and never closed
at android.net.http.AndroidHttpClient.<init>(AndroidHttpClient.java:152)
at android.net.http.AndroidHttpClient.newInstance(AndroidHttpClient.java:138)
at com.google.android.voicesearch.speechservice.SpeechServiceHttpClient.<init>(SpeechServiceHttpClient.java:59)
at com.google.android.voicesearch.speechservice.ServerConnectorImpl.<init>(ServerConnectorImpl.java:85)
at com.google.android.voicesearch.VoiceSearchContainerImpl.createRecognitionController(VoiceSearchContainerImpl.java:83)
at com.google.android.voicesearch.GoogleRecognitionService.onCreate(GoogleRecognitionService.java:65)
at android.app.ActivityThread.handleCreateService(ActivityThread.java:2066)
at android.app.ActivityThread.access$2500(ActivityThread.java:123)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:993)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:130)
at android.app.ActivityThread.main(ActivityThread.java:3835)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:507)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:847)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:605)
at dalvik.system.NativeStart.main(Native Method)假设错误不在Android的代码中,而是在我的代码中,这个泄漏的资源只能在以下几个中创建:
SpeechRecognizer.createSpeechRecognizer()new RecognitionListener()new Intent(SpeechRecognizer.RESULTS_RECOGNITION)SpeechRecognizer.startListening(recognizerIntent)但我怎么知道是哪一个?
发布于 2011-10-25 14:49:50
假设bug不是在Android的代码中,而是在我的代码中
泄漏在com.google.android.voicesearch中,这不是您的代码。
如果您可以创建一个演示此漏洞的小示例项目,我们可以将问题转移到Google,并希望他们能够解决这个问题。
发布于 2011-10-25 14:54:22
为什么你认为它不是安卓的呢?SpeechRecognizer和RecognitionListener都在ASOP中,所以你可以检查(它不在那里)。很可能SpeechServiceHttpClient在内部使用AndroidHttpClient。除了检查是否调用正在使用的框架类的所有终结器方法(close()、check ()等)之外,您无能为力。
https://stackoverflow.com/questions/7891047
复制相似问题