2012-04-13 15 views
19

मैंने अपने एंड्रॉइड SDK को नवीनतम संस्करण में अपडेट किया है, और अब यह कहता है कि startManagingCursor()deprecated है। मुझे नए CursorLoader का उपयोग करने के लिए अपने कोड को अपडेट करने में मदद चाहिए।StartManaging कर्सर से कर्सर लोडर से कैसे करें (ठीक से) संक्रमण?

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

तो, startManagingCursor() पुराना है, क्या नया कोड देखो की तरह, अगर यह अनुवाद किया गया था चाहते हैं?

+1

कर्सर लोडर ContentProvider के लिए क्रिया में काम करता है ... इसलिए यह कोड "अनुवाद" करना संभव नहीं है .... – Selvin

+0

http://www.androiddesignpatterns.com/2012/07/loaders-and-loadermanager-background। एचटीएमएल – user1422551

+0

इस जवाब को अवमूल्यित विधि के बारे में ध्यान में रखना अच्छा है। यह मुख्य धागे पर चलता है, जो चीजों को धीमा कर देता है, यही कारण है कि यह कमजोर था। [लिंक] (http://stackoverflow.com/questions/19651680/cursorloader-with-startmanagingcursor) – Azurespot

उत्तर

16

पहले, startManagingCursor() अभी भी काम करता है। यह आदर्श नहीं है, जिसमें यह मुख्य अनुप्रयोग धागे पर डेटाबेस I/O करता है। एंड्रॉइड में, "बहिष्कृत" का अर्थ आम तौर पर है "हमारे पास कुछ और है जो हमें लगता है कि बेहतर है कि हम सुझाव देते हैं कि आप इसका उपयोग करें"। इसलिए, जब यह आपके ऐप के विकास चक्र में समझ में आता है, तो आपको माइग्रेट करने पर विचार करना चाहिए।

दूसरा, जैसा कि सेल्विन ने नोट किया था, एसडीके केवल ContentProvider के लिए कार्यान्वयन प्रदान करता है। मेरे पास a project that offers a Loader for SQLite है।

तीसरा, वास्तव में आपके कोड के लिए कोई सीधा-अप "अनुवाद" नहीं है। Loader ढांचा असीमित और घटना संचालित है, जबकि आपका कोड नहीं है।

सामान्य शब्दों में, अपने Loader नोटों को लाते समय के लिए जिम्मेदार होगा, और आप अपने onLoadFinished() में ListView हो जाएगी, जब आप Loader से Cursor दिया जाता है।

+2

बस एक विचार जोड़ने के लिए, यदि आप नए कोड का निर्माण कर रहे हैं तो आपको कभी भी बहिष्कृत एपीआई का उपयोग नहीं करना चाहिए। –

+22

@EthanAllen: बकवास। शुरुआत के लिए, यदि आप पुराने उपकरणों का समर्थन करना चाहते हैं तो यह असंभव है। उदाहरण के लिए, आप 'प्राथमिकता' नहीं बना सकते हैं जो बहिष्कृत विधियों का उपयोग किए बिना एपीआई स्तर 10 और नीचे काम करता है। मामले-दर-मामले आधार पर बहिष्करण चेतावनियों पर विचार किया जाना चाहिए। * आम तौर पर * जहां आप संभव हो वहां बहिष्कृत विधियों से बचना चाहते हैं। लेकिन "कभी नहीं" मामले को खत्म कर रहा है। – CommonsWare

+0

उत्कृष्ट विश्लेषण। Upvoted! –

संबंधित मुद्दे