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

Как (правильно) перейти от startManagingCursor к CursorLoader?

Я обновил свой андроид SDK до последней версии, и теперь он говорит, что startManagingCursor() - deprecated. Мне нужна помощь для обновления моего кода, чтобы использовать новый CursorLoader.

private void fillData() {
    Cursor notesCursor = mDbHelper.fetchAllNotes();
    startManagingCursor(notesCursor);
    NoteAdapter notes = new NoteAdapter(this,  R.layout.notes_row, notesCursor);
    setListAdapter(notes);
}

Итак, startManagingCursor() старый, как бы выглядел новый код, если он был переведен?

4b9b3361

Ответ 1

Во-первых, startManagingCursor() все еще работает. Он не идеален, поскольку он выполняет ввод/вывод базы данных в основном потоке приложения. В Android "устаревший" обычно означает "у нас есть что-то еще, что мы считаем лучше, чем мы предлагаем вам использовать". Поэтому, когда это имеет смысл в цикле разработки вашего приложения, вам следует подумать о переносе.

Во-вторых, как отметил Селвин, SDK обеспечивает реализацию Loader для ContentProvider. У меня проект, предлагающий непосредственно Loader для SQLite.

В-третьих, для вашего кода действительно нет прямого перевода. Структура Loader является асинхронной и управляемой событиями, тогда как ваш код не является.

Вообще говоря, ваш Loader будет отвечать за извлечение заметок, и вы будете заполнять свой ListView в onLoadFinished(), когда вы доставляете Cursor из Loader.