2011-03-22 17 views
6

समझने योग्य यह प्रश्न थोड़ा सा व्यक्तिपरक है, लेकिन मेरा मानना ​​है कि एक ठोस उत्तर है।एंड्रॉइड लाइफसाइकिल हैंडलिंग कितना है?

मेरे पास वास्तव में एक छोटी सी गतिविधि है जो किसी सूची में उपयोगकर्ता को कुछ डेटा प्रदर्शित करने से अधिक कुछ नहीं करती है। डेटा का उपयोग मैं एप्लिकेशन की SQLite डेटाबेस से आता है और मैं अपने आप को इस

public class MainActivity extends ListActivity{ 
    private DatabaseAdapter dbHelper; 
    @Override 
    public void onCreate(Bundle b){ 
      dbHelper = new DatabaseAdapter(this); 
      super.onCreate(b); 
    } 

    @Override 
    public void onResume(){ 
      dbHelper.open(); 
      fill_data();//a small method that uses dbHelper to setListAdapter 
      super.onResume(); 
     } 

    @Override 
    public void onPause(){ 
      dbHelper.close(); 
      super.onPause(); 
    } 

    private void fill_data(){/*makes use of dbHelper */ } 

कर पाते हैं यह सिर्फ कोड मोटे तौर पर अनावश्यक है? मैं जीवनशैली को संभालना चाहता हूं ताकि जब मुख्य एक्टिविटी शीर्ष पर न हो, तो मैं कम से कम संसाधनों का उपयोग कर सकता हूं, लेकिन साथ ही, यह पूरी गतिविधि onCreate() में की जा सकती है।

उत्तर

5

यदि आप इसका उपयोग करते हैं तो आप डीबीहेल्पर को खोलते और बंद करते हैं तो आप संभवतः ऑन पॉज़ विधि को ओवरराइड नहीं कर सकते हैं। हेल्पर खोलने के लिए यह गहन नहीं है (मैं SQLiteOpenHelper मान रहा हूं), ताकि आप इसे समयपूर्व अनुकूलन पर विचार कर सकें।

किसी भी दर पर, आपको लगभग हमेशा ओवरराइड करने की आवश्यकता होगी, अक्सर रेस्यूम पर ओवरराइड करें, और कभी-कभी रोकें। महत्वपूर्ण बात यह है कि जब ढांचा विभिन्न कॉलबैक कहता है और आपको उनमें क्या करना है।

यदि आपकी गतिविधि अग्रभूमि पर जाती है या आप अपने गतिविधि के लूपर (कहें, स्थान अपडेट) में कुछ करना चाहते हैं, तो आपको कुछ करना होगा, आपको रेज़्यूम पर ओवरराइड करना होगा। अगर आपको अपने आप को साफ करने की ज़रूरत है, तो आपको रोकना होगा।

मैं आमतौर पर डेस्ट्रॉय पर लागू नहीं करता क्योंकि इसे कॉल करने की गारंटी नहीं है।

0

यह वास्तव में संभव है कि आपको डेटाबेस की आवश्यकता होने पर केवल खुले और बंद करें। हालांकि यह आपके मामले को प्रभावित नहीं करता है, कुछ फोन (सैमसंग गैलेक्सी एस) में बहुत धीमे डेटाबेस हो सकते हैं और कई कनेक्शन खुले हो सकते हैं (उदाहरण के लिए एक गतिविधि और सेवा में) वास्तव में चीजों को धीमा कर देता है ... (मैंने 1s लिखने के समय देखा !!)

0

डेटाबेस खोलना और बंद करना समय लगता है और आपको इसे एक अलग थ्रेड में करना चाहिए। इस बात और पीडीएफ में अधिक जानकारी: http://www.google.com/events/io/2010/sessions/writing-zippy-android-apps.html

तो आपको और भी कोड लिखने की आवश्यकता है। : पी

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