2011-10-25 9 views
5

Non mi istanziare un AndroidHttpClient ovunque nel mio codice, ma lo faccio iniziare un intento riconoscitore, che produce questa eccezione ad un certo punto, quando i miei applicazione viene eseguita:Leak trovato: AndroidHttpClient creato e mai chiusa

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) 

Supponendo che il bug non è nel codice di Android, ma nella mia, questa risorsa trapelato avrebbe potuto essere realizzato solo in uno dei seguenti modi:

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

Ma come faccio a sapere quale?

risposta

6

Supponendo che il bug non è nel codice di Android, ma nella mia

La perdita è in com.google.android.voicesearch, che non è il vostro codice.

Se è possibile creare un piccolo progetto di esempio che mostri questa perdita, possiamo ottenere un problema a Google e sperare che lo risolvano.

1

Perché pensi che non sia in Android? SpeechRecognizer e RecognitionListener sono in ASOP, quindi è possibile controllare (non è lì). Molto probabilmente lo SpeechServiceHttpClient utilizza internamente un AndroidHttpClient. Non c'è molto che puoi fare, ma controlla di aver chiamato tutti i metodi finalizzatori, se ce ne sono (close(), shutdown(), ecc), delle classi framework che stai usando.

+0

Grazie Nikolay Elenkov e @CommonsWare. – srf