Intereting Posts
Ответ HTTPUrlConnection на Android возвращает мусор Android-устройство не отображается в списке adb Android ListView: не удается центрировать элементы при запуске, из-за исключения Null Pointer Я хочу получить profilepicture whatsApp, но только получить имя и контактную информацию? Фрагмент непреднамеренно за другими видами Как я могу проверить, что URI изображения действителен в Android? Как программно добавить несколько LinearLayouts в одно представление, а затем добавить в ViewFlipper? Как получить TimeZone от мобильного телефона Android? Android, как я могу заменить устаревший tabhost? BroadcastReceiver для многостраничного SMS Доступна более новая версия com.android.support:appcompat-v7, чем 23.2.1: 24.0.0-alpha1 Почему excludeFromRecents удаляет все действия? Любой эквивалент раскадровки iOS для разработки Android? Добавить графический интерфейс HTML / JS / CSS в приложение OpenGL (Android и iOS) Как отправить стоимость через намерение после завершения деятельности

Недостатки андроида не закрывать курсор

У меня есть некоторые вопросы относительно Cursor .

Я хочу знать, каковы недостатки не закрытия Cursor ?

Он освобождает ресурсы, но какие ресурсы освобождены?

Если мы не закрываем Cursor ? Каковы будут последствия и в какой степени?

Не закрытие Cursor не влияет на Activity немного, но оно дает ошибку в log cat.

Закрытие Cursor предотвратит любые утечки памяти, поэтому да, они всегда должны быть закрыты, когда они больше не используются.

Курсор – это только интерфейс. Многое зависит от реализации, какого конкретного класса, который реализует этот интерфейс, который вы используете …

В случае с SQLiteCursor существует немало вещей, которые нужно очистить (это от Froyo):

 @Override public void close() { super.close(); deactivateCommon(); mQuery.close(); mDriver.cursorClosed(); } 

Не закрывая курсор, данные все равно должны быть согласованы, но вы собираетесь утечка памяти …

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

Например, я написал приложение, которое загружает данные из SQLite DB устройства на сервер. Если бы я не закрывал курсор каждый раз, когда я делал чтение и запись из базы данных, в конечном итоге я столкнулся с ошибками из-за памяти и различными другими проблемами.

Если вы не закрываете курсор, тогда у вас будут проблемы с доступом к вашим данным в вашей базе данных, потому что, когда база данных открыта, она недоступна, если что-то произойдет, например, действие приостановлено или иначе. В частности, эту проблему можно смягчить, если вы позволите Управлению управлять ею.