0

Android の連絡先リストと保持する 3 つのデータベース テーブルを同期する必要があるアプリがあります。

連絡先リストをループして、返された行ごとにカスタム オブジェクトを作成し、そのオブジェクトのプロパティを、その連絡先のアプリ テーブルに保存したものと比較します。

このタスクは非同期タスクで実行されます。

初めて実行するときは問題なく動作しますが、アプリを離れて何度も戻ってくると、アプリが壊れて次のエラーが返されます。何か案は?

09-03 06:42:19.070: E/IMemory(31018): cannot dup fd=1023, size=2097152, err=0 (Too many open files)

09-03 06:42:19.070: E/IMemory(31018): cannot map BpMemoryHeap (binder=0x1197738), size=2097152, fd=-1 (Bad file number)

09-03 06:42:19.070: E/JavaBinder(31018): *** Uncaught remote exception!  (Exceptions are not yet supported across processes.)

09-03 06:42:19.070: E/JavaBinder(31018): java.lang.RuntimeException: No memory in memObj
09-03 
06:42:19.070: E/JavaBinder(31018):  at android.database.CursorWindow.native_init(Native Method)
09-03 
06:42:19.070: E/JavaBinder(31018):  at android.database.CursorWindow.<init>(CursorWindow.java:518)
09-03 
06:42:19.070: E/JavaBinder(31018):  at android.database.CursorWindow.<init>(CursorWindow.java:27)
09-03 
06:42:19.070: E/JavaBinder(31018):  at android.database.CursorWindow$1.createFromParcel(CursorWindow.java:493)

09-03 06:42:19.070: E/JavaBinder(31018):    at android.database.CursorWindow$1.createFromParcel(CursorWindow.java:496)
09-03 06:42:19.070: E/JavaBinder(31018):    at android.content.ContentProviderNative.onTransact(ContentProviderNative.java:103)
09-03 06:42:19.070: E/JavaBinder(31018):    at android.os.Binder.execTransact(Binder.java:288)
09-03 06:42:19.070: E/JavaBinder(31018):    at dalvik.system.NativeStart.run(Native Method)
4

1 に答える 1

1
E/IMemory(31018): cannot dup fd=1023, size=2097152, err=0 (Too many open files)

android.database.CursorWindow.native_init(Native Method)

これらの 2 行は、閉じないなど、カーソルで何かを台無しにしていることを示唆しています。

すべてのカーソルを適切に閉じて、アプリの動作を観察することをお勧めします。

于 2012-09-03T06:02:44.673 に答える