#android #database #sqlite
#Android #База данных #sqlite
Вопрос:
Я получаю android.database.CursorWindowAllocationException в фоновом процессе. Я убедился, что я закрываю курсоры после их открытия во всех случаях. Я даже сохранил статический глобальный счетчик, который подсчитывает количество открытых курсоров, чтобы убедиться, что я не пропускаю курсоры.
Кроме того, я улавливаю «java.net.socketexception слишком много открытых файлов» примерно в то же время, что и исключение CursorWindowAllocation. Я просмотрел количество открытых подключений к сокетам моего устройства с помощью adb, и оно никогда не превышает 200.
Я вызываю как сетевые операции, так и операции с БД в моей службе, которая запускается периодически каждые 5 секунд. Что может быть возможной причиной этих ошибок?
Комментарии:
1. Можете ли вы предоставить код этой службы? Но на самом деле кажется, что вы неправильно закрываете.
2. Я заметил, что у меня около 50 подключений в состоянии TIME_WAIT, возможно, потому, что я запускаю фоновую службу с 5 сетевыми подключениями каждые 5 секунд. Я уменьшил эту частоту до одного раза в минуту. Я обновлю здесь, если это сработает