2011-06-23 3 views
0

Je reçois un rapport de blocage qui indique OutOfMemoryError dans mon appel à startManagingCursor. Voici la trace de la pile de retour:Android OutOfMemoryError Crash dans startManagingCursor

java.lang.OutOfMemoryError 
at java.util.ArrayList.add(ArrayList.java:123) 
at android.app.Activity.startManagingCursor(Activity.java:1652) 
at com.bubblewaretechnology.pianounlockscreen.LockDetecter.onResume(LockDetecter.java:633) 
at android.app.Instrumentation.callActivityOnResume(Instrumentation.java:1150) 
at android.app.ActivityThread.performNewIntents(ActivityThread.java:1789) 
at android.app.ActivityThread.handleNewIntent(ActivityThread.java:1795) 
at android.app.ActivityThread.access$2300(ActivityThread.java:124) 
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1015) 
at android.os.Handler.dispatchMessage(Handler.java:99) 
at android.os.Looper.loop(Looper.java:123) 
at android.app.ActivityThread.main(ActivityThread.java:3806) 
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:839) 
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597) 
at dalvik.system.NativeStart.main(Native Method) 

Je suis très prudent de fermer les curseurs, SQLiteDatabase et SQLiteOpenHelper. Voici un court segment de code que l'accident se réfère à:

Cursor callCursor = lockLib.getCallState(); 
startManagingCursor(callCursor); 
.... 
callCursor.close(); 

Jolie perplexe sur la façon de s'y prendre pour résoudre ce problème. Je sais que startManagingCursor est déprécié mais je ne cible pas HONEYCOMB ou plus tard, donc je ne peux pas passer à CursorLoader. Quelqu'un at-il des suggestions sur la façon de procéder?

Répondre

0

Je sais que c'est boiteux de répondre à votre propre question, mais vous pouvez supprimer startManagingCursor, Reference Link, tant que vous gérez le cycle de vie de votre curseur de manière appropriée.