Подтвердить что ты не робот

Какая цель startManagingCursor?

Хорошо, в документации указано, что он позволяет Управлению управлять жизненным циклом курсора. Но я не вижу в этом смысла, так как, когда действие уничтожается, любые ссылки на вновь созданный курсор также должны быть удалены, а затем сам курсор остается погибшим в следующем цикле сбора мусора. Так зачем беспокоиться?

4b9b3361

Ответ 1

Вы не должны полагаться на курсоры, которые уничтожаются сборщиком мусора... курсор представляет собой значительное количество ресурсов: все данные, удерживаемые курсором, плюс соединение с поставщиком контента, которому принадлежит курсор, что также означает требуя сохранения его процесса в памяти.

В более поздних версиях Android сообщения журнала печатаются, если финализатор курсора работает без явного закрытия, потому что для приложений важно закрыть курсоры, когда они выполняются с ними.

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

Тем не менее, на этом этапе вы должны считать управляемые курсоры устаревшими. Новый API Loader намного лучше и имеет множество улучшений в пользовательском интерфейсе вашего приложения - он гарантирует, что все операции курсора выполняются с основного потока (поэтому в ваших взаимодействиях и анимациях пользовательского интерфейса нет глюков) и может распространять существующие данные курсора через экземпляры активности, когда действие перезапускается из-за изменения конфигурации вместо необходимости перезагрузки данных.

Если вам нужно запускать более старые версии Android версии 3.0, вы можете использовать реализацию библиотеки поддержки v4 для Loader для этих приложений.