2012-04-13 30 views
19

Android SDK'u en son sürüme güncelledim ve şimdi startManagingCursor()'un deprecated olduğunu söylüyor. Yeni CursorLoader'u kullanmak için kodumu güncellemek için yardıma ihtiyacım var.StartManagingCursor'dan CursorLoader'a nasıl (düzgün) geçiş yapılır?

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

Yani, startManagingCursor() yeni kod bakmak gibi, tercüme edilmiş olsaydı, ne kadar eski?

+1

CursorLoader, ContentProvider uygulamasında çalışır ... Bu nedenle, rhis kodu "çevirmek mümkün değildir." – Selvin

+0

http://www.androiddesignpatterns.com/2012/07/loaders-and-loadermanager-background. html – user1422551

+0

Bu cevabı amorti edilen yönteme göre akılda tutmak isteriz. Ana iş parçacığı üzerinde çalışır, bu da işleri yavaşlatır, bu yüzden amortismana neden olur. [link] (http://stackoverflow.com/questions/19651680/cursorloader-with-startmanagingcursor) – Azurespot

cevap

16

İlk olarak, startManagingCursor() hala çalışır. Ana uygulama iş parçacığı üzerinde veritabanı I/O gerçekleştirmesi, ideal değildir. Android'de "kullanımdan kaldırıldı" genellikle "kullanmanı önerdiğimiz daha iyi olduğunu düşündüğümüz başka bir şeyimiz var" anlamına gelir. Dolayısıyla, uygulamanızın geliştirme döngüsünde anlamlı olduğunda, taşımayı düşünmelisiniz.

İkinci olarak, Selvin'in belirttiği gibi, SDK yalnızca ContentProvider için bir Loader uygulaması sağlar. Doğrudan a project that offers a Loader for SQLite var.

Üçüncü olarak, gerçekten kodunuz için doğrudan "çeviri" yoktur. Loader çerçevesi eşzamansız ve olaya dayalı, kodunuz ise değil.

Genellikle senin Loader notları alma sorumlu olacak, konuşma ve Loader den Cursor teslim edildiğinde sen, senin ListView onLoadFinished() yılında doldurmak olacaktır.

+2

Sadece burada bir düşünce eklemek için, eğer yeni bir kod oluşturuyorsanız, kullanımdan kaldırılmış API'leri asla kullanmamalısınız. –

+22

@EthanAllen: Anlamsız. Eski cihazları desteklemek istiyorsanız, yeni başlayanlar için mümkün değildir. Örneğin, kullanımdan kaldırılmış yöntemler kullanmadan API Düzey 10 ve altında çalışan bir "PreferenceActivity" oluşturamazsınız. Deprecation uyarıları, duruma göre ayrı ayrı ele alınmalıdır. * Genellikle * Mümkün olduğunda kullanım dışı yöntemlerden kaçınmak istersiniz. Ama "asla" vakayı abartıyor. – CommonsWare

+0

mükemmel analiz. UPVOTED! –