Копирует ли курсор результирующий набор?

#android #database #android-cursor

#Android #База данных #android-курсор

Вопрос:

Например, если я использую следующий код для запроса некоторых данных из базы данных.

 Uri uri = Uri.parse("content://com.android.contacts/contacts?address_book_index_extras=true");
        String selection = "LEFT OUTER JOIN (select raw_contact_id, data1 from data where mimetype_id = 5) AS phone_data ON(_id = phone_data.raw_contact_id)"; 
        Cursor c = getContentResolver().query(Contacts.CONTENT_URI, null, selection, null, null);
  

Я хочу спросить, копирует ли база данных после метода запроса свой результирующий набор в cursor или просто делает cursor чем-то вроде указателя и указывает на первую строку результирующего набора и запрашивает дополнительные данные, когда мы вызываем `moveToNext’

спасибо

Ответ №1:

ДА. Это копия базы данных, доступная только для чтения.

Комментарии:

1. Есть ли у вас какая-либо ссылка в качестве источника / reference для этого?

Ответ №2:

От разработчиков Android:

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