1.) Можно ли использовать один курсор для всех операций базы данных приложения? Если нет, то почему?
Да. Можно повторно использовать курсор. Однако вы должны знать, что работа курсора не такая интуитивная, как вы думаете. Курсор не извлекает все данные из некоторого хранилища данных и не сохраняет их все в памяти. Вместо этого он извлекает данные только по мере необходимости, что минимизирует использование памяти. Поэтому всегда рекомендуется закрыть курсор перед повторной инициализацией. Тем не менее, на самом деле не так уж много штрафов за производительность при создании абсолютно нового курсора каждый раз, когда вам это нужно.
2.) Неужели необходимо постоянно открывать и закрывать курсоры после каждого использования?
Да, да и да. У меня когда-то было много проблем, отлаживая какое-то сетевое приложение, которое должно периодически синхронизировать действия телефона с локальной db, а затем отправлять на внешний сервер. Открытие и закрытие (особенно закрытие) важно, как и любой другой поток или конечная точка для связи в java или андроиде, например FileInputStream или Socket
3.) По этой ссылке определение close() - это закрытие курсора, повторное использование всех его ресурсов и сделать его полностью недействительным. Что происходит, когда оно становится недействительным? Будет ли он повторно использоваться?
Как я уже говорил выше, метод close() работает так же, как и большинство других методов close() других классов Java. Как только вы его назовете, вам больше не следует использовать курсор. Это похоже на метод close() класса Socket. Как только Socket закрыт, он недоступен для дальнейшего использования в сети (т. Е. Не может быть повторно подключен или отскок). Необходимо создать новый сокет.
'1.' Курсор содержит результаты запроса ... для каждого запроса вы получите новый Cursor' 2.' yes, необходимо '3.' invalid означает invalid ... invalid Cursor не может использоваться или re-used ... – Selvin
Итак, зачем нужно закрывать курсор, если он становится недействительным и, следовательно, не может использоваться? – ClaireG
для бесплатных ресурсов ... у вас есть аналогичная ситуация с Bitmap.recycle() ... internaly эти API-интерфейсы написаны i C ... там нет GC ... поэтому вы должны сказать прямо: «Я не знаю», t нужно это больше » – Selvin