2012-08-30 32 views
7

मेरे पास एक ऐप है जहां साइन इन करने के बाद यह आपको स्वागत स्क्रीन पर फेंकता है। मैं जब देखने के लिए onResume आग एक टोस्ट डाल दिया, लेकिन यह भी आग onCreateऑनर्यूम() को क्यों कहा जाता है जब कोई गतिविधि शुरू होती है?

के बाद
protected void onResume(){ 
    super.onResume(); 
    Database openHelper = new Database(this);//create new Database to take advantage of the SQLiteOpenHelper class 
    myDB2 = openHelper.getReadableDatabase(); // or getWritableDatabase(); 
    myDB2=SQLiteDatabase.openDatabase("data/data/com.example.login2/databases/aeglea", null, SQLiteDatabase.OPEN_READONLY);//set myDB to aeglea 
     cur = fetchOption("SELECT * FROM user_login");//use above to execute SQL query 
     msg.setText("Username: "+cur.getString(cur.getColumnIndex("username")) 
        +"\nFull name: "+cur.getString(cur.getColumnIndex("name"))+" "+cur.getString(cur.getColumnIndex("last")) 
        +"\ne-mail: "+cur.getString(cur.getColumnIndex("email")) 
        +"\nAeglea id:"+cur.getString(cur.getColumnIndex("uid"))); 

     Toast.makeText(getApplicationContext(), "RESUMED", Toast.LENGTH_SHORT).show(); 
} 

यह आता है से:

//create new intent 
Intent log = new Intent(getApplicationContext(), Welcome.class); 
// Close all views before launching logged 
    log.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
    startActivity(log); 
    // Close Login Screen 
    finish(); 

मैं विस्मित कर रहा हूँ। कुछ अनुभव यहां दिया जा सकता कृपया

+1

'onPause' या' onResume'? – zapl

+0

@zapl क्षमा करें, मैं अपना प्रश्न संपादित करूंगा – MayTheSchwartzBeWithYou

उत्तर

19

खैर मैं बहुत अच्छी तरह से समझ में नहीं आता क्या पूछना कोशिश कर रहे हैं या सवाल यहाँ क्या है। लेकिन मैं आपको "Android Activity LifeCycle" पढ़ने के लिए अनुशंसा करूंगा और यह आपके कई संदेहों को स्पष्ट करेगा क्योंकि एंड्रॉइड अन्य भाषाओं या प्लेटफॉर्म के समान नहीं है।

enter image description here

नोट: OnResume के रूप में अपनी गतिविधि दिखाई देने लगता है हर बार गतिविधि "दृश्यमान" है, इसलिए रूप में कई बार कहते हैं, कई बार अपने विधि बुलाया जाएगा की एक ही नंबर। यदि आप पहली बार विधि को कॉल करना चाहते हैं, तो ऑनक्रेट वह है जो आप ढूंढ रहे हैं।

+0

धन्यवाद नोट ने मुझे आपके स्वागत पीटर को – MayTheSchwartzBeWithYou

+1

के लिए और अधिक स्पष्ट कर दिया है, मुझे उम्मीद है कि यह भविष्य में आपकी मदद कर सकता है। –

6

कृपया गतिविधि जीवन चक्र राज्य चार्ट पर एक नज़र डालें। > गतिविधि

http://developer.android.com/reference/android/app/Activity.html#ProcessLifecycle चल रहा है -)))

  1. OnCreate (
  2. onStart (
  3. onResume (
  4. :

    इस आदेश पद्धतियों को बुलाया जा रहा है

+0

हां मैंने उतना ही माना लेकिन मैंने सोचा कि ऑनस्यूज़() को चालू किया गया था जब ऑनपोज़ निकाल दिया गया था। – MayTheSchwartzBeWithYou

+1

यह बिल्कुल ठीक है। कुछ चीजें एंड्रॉइड पर बिल्कुल अलग हैं, लेकिन जब आप उन्हें जानते हैं तो आप इसे प्यार करेंगे। शुरुआत में मुझे आश्चर्य हुआ जब मुझे पता चला कि AtctivityResult (..) को रेज़्यूम (..) पर पहले कहा जाता है, यदि आप इसे जल्द से जल्द इस्तेमाल करते हैं। – Ivo

2

onResumeonCreate के बाद onStart और onResume भी पहले प्रक्षेपण पर बुलाया है कि यह कोड लिखने आसान बना देता है है सामान्य Activity Lifecycle

कारण आप प्राप्त है।

आप मान सकते हैं कि onResume पर वापस आने से पहले आपको मिलेगा क्योंकि के बिना "फिर से शुरू" स्थिति से बाहर निकलने का कोई तरीका नहीं है। यही कारण है कि व्यवहार onResume में चीजों को प्रारंभ करने के लिए और उन्हें आगे में जाँच के बिना डी-प्रारंभ करने में इस्तेमाल किया जा सकता। यदि आप यह सुनिश्चित नहीं कर सकते कि onResume को शुरुआत में बुलाया गया था कि पूरी योजना टूट जाती है।

एक sidenote पर: के बाद से है कि यूआई धागा जो बल्कि यूआई आकर्षित और स्पर्श की घटनाओं को संभाल चाहिए अवरुद्ध कर देगा onXYZ से किसी भी विधि से अपने डेटाबेस का उपयोग न करें।