Мое приложение аварийно завершает работу Google Services Framework x_X - PullRequest
1 голос
/ 23 октября 2011

Мое приложение проверяет пропущенные звонки каждые x раз.Все работает нормально, но через некоторое время произойдет сбой Google Services Framework (com.google.process.gapps) и отобразится диалоговое окно принудительного закрытия.Поэтому я подключил телефон и посмотрел LogCat и обнаружил эту ошибку во время проверки пропущенных вызовов.

E / IMemory (11481): невозможно dup fd = 1023, размер = 1048576, err = 0(Слишком много открытых файлов)

E / IMemory (11481): невозможно сопоставить BpMemoryHeap (связыватель = 0x8b06f0), размер = 1048576, fd = -1 (неверный номер файла)

E / JavaBinder(11481): * Неизученное удаленное исключение!(Исключения еще не поддерживаются во всех процессах.)

E / JavaBinder (11481): java.lang.RuntimeException: нет памяти в memObj

E / JavaBinder (11481): в android.database.CursorWindow.native_init (собственный метод)

E / JavaBinder (11481): в android.database.CursorWindow. (CursorWindow.java:518)

E / JavaBinder (11481): в android.database.CursorWindow. (CursorWindow.java:27)

E / JavaBinder (11481): в android.database.CursorWindow $ 1.createFromParcel (CursorWindow.java:493)

E / JavaBinder(11481): в android.database.CursorWindow $ 1.createFromParcel (CursorWindow.java:496)

E / JavaBinder (11481): в android.content.ContentProviderNative.onTransact (ContentProviderNative.java:103)

E / JavaBinder (11481): на android.os.Binder.execTransact (Binder.java:288)

E / JavaBinder (11481): на dalvik.system.NativeStart.run (собственный метод)

Вот как я проверяю пропущенные звонки

String[] projection = { CallLog.Calls.TYPE, CallLog.Calls.NEW };
                     String where = CallLog.Calls.TYPE + "=" + CallLog.Calls.MISSED_TYPE + " AND " + CallLog.Calls.NEW + "=1";

Cursor c = this.getContentResolver().query(CallLog.Calls.CONTENT_URI, projection, where, null, null);

if(c != null) {
     c.moveToFirst();
     int mMissedCallCount = c.getCount();
...
}

Итак, глядя на LogCatэто курсор, который вызывает проблему.Я что-то здесь не так делаю?Кроме того, что означает «слишком много открытых файлов»?Я не открывал никаких файлов - о которых я все равно знаю ...

1 Ответ

3 голосов
/ 23 октября 2011

Похоже, что вы никогда не звоните c.close() на свой курсор. Попробуйте добавить это после обработки курсора и посмотреть, решит ли он проблему.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...