Какова цель startManagingCursor?

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

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

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

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

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

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