2012-08-30 39 views
7

我有一個應用程序,在登錄後將它引發到歡迎屏幕。我把吐司時看到的onResume火災,但它也激發後的onCreate爲什麼onResume()在活動啓動時調用?

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」,這將清除你在android中的許多疑惑,導致與其他語言或平臺不一樣。

enter image description here

注:的是的onResume每次活動是「看得見」的電話,讓多次,你的活動變得可見,同樣次數的方法將被調用。如果你只是想第一次調用這個方法,那麼OnCreate就是你想要的。

+0

感謝這封信讓我更加清楚 – MayTheSchwartzBeWithYou

+1

你的歡迎彼得,我希望這可以幫助你在未來。 –

6

請看看活動生命週期狀態圖。

這是所述方法被調用的命令:

  1. 的onCreate()
  2. 在onStart()
  3. 的onResume()
  4. - >活動運行

http://developer.android.com/reference/android/app/Activity.html#ProcessLifecycle

+0

是的,我認爲儘可能多,但我認爲onResume()是在onPause被觸發時觸發的。 – MayTheSchwartzBeWithYou

+1

這完全沒問題。有些東西在Android上與衆不同,但是當你知道它們時,你會喜歡它的。在開始時,當我知道在onResume(..)之前調用onActivityResult(..)時,我很震驚,以防萬一您很快使用它。 – Ivo

2

onResumeonCreate後,你得到正常Activity Lifecycle

原因onStartonResume稱爲甚至在第一次發射的是,它使得編寫代碼更容易。

你可以假設你回到onResume之前,你會得到叫,因爲沒有辦法退出,不的「恢復」狀態。該行爲可用於初始化onResume中的內容並在不需要進一步檢查的情況下取消初始化。如果你不能確定onResume在整個計劃開始時被調用。

在旁註:不要從任何onXYZ方法訪問數據庫,因爲這會阻塞UI線程,而該線程應該繪製UI並處理觸摸事件。

相關問題