【问题标题】:Leak found: AndroidHttpClient created and never closed发现泄漏:Android HttpClient 创建且从未关闭
【发布时间】:2011-10-25 14:42:35
【问题描述】:

我并没有真正在我的代码中的任何地方实例化 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 的代码中,而是在我的代码中,则此泄露的资源可能仅在以下其中之一中创建:

  1. SpeechRecognizer.createSpeechRecognizer()
  2. new RecognitionListener()
  3. new Intent(SpeechRecognizer.RESULTS_RECOGNITION)
  4. SpeechRecognizer.startListening(recognizerIntent)

但是我怎么知道是哪一个呢?

【问题讨论】:

    标签: android httpclient speech-recognition


    【解决方案1】:

    假设错误不在 Android 的代码中,而是在我的代码中

    泄漏在com.google.android.voicesearch,不是你的代码。

    如果您可以创建一个小型示例项目来演示此泄漏,我们可以将问题提交给 Google,并希望他们能够解决。

    【讨论】:

      【解决方案2】:

      您为什么认为它不在 Android 中? SpeechRecognizerRecognitionListener 在 ASOP 中,所以你可以检查(它不在那里)。很可能SpeechServiceHttpClient 在内部使用AndroidHttpClient。您无能为力,只能检查您正在调用您正在使用的框架类的所有终结器方法(如果有的话)(close()、shutdown() 等)。

      【讨论】:

      • 谢谢 Nikolay Elenkov 和@CommonsWare。
      猜你喜欢
      • 1970-01-01
      • 2011-03-31
      • 2012-01-23
      • 1970-01-01
      • 2016-06-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多