[英]Why is onResume() called when an activity starts?
我有一個應用程序,登錄后它會將您帶到歡迎屏幕。 我放了一個 Toast 來查看 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();
我很困惑。 請在這里提供一些經驗
好吧,我不太了解您要問的是什么或這里的問題是什么。 但是我建議您閱讀“ Android Activity LifeCycle ”,這將消除您在android中與其他語言或平台不一樣的許多疑問。
注意:每次活動“可見”時,都會調用OnResume,因此,只要活動變為可見,就會調用方法的次數相同。 如果您只是想第一次調用該方法,那么OnCreate是您想要的。
請查看活動生命周期狀態圖。
這是方法被調用的順序:
http://developer.android.com/reference/android/app/Activity.html#ProcessLifecycle
onCreate
之后的onResume
是正常的活動生命周期
即使在首次啟動時也會調用onStart
和onResume
的原因是,它使編寫代碼更加容易。
你可以假設你回到之前onResume
你會得到onPause
叫,因為沒有辦法退出“恢復”狀態,而不onPause
。 該行為可用於初始化onResume
並取消初始化它們,而無需進一步檢查onPause
。 如果您不確定在開始時是否調用過onResume
,則整個方案都會中斷。
旁注:不要使用任何onXYZ
方法訪問數據庫,因為這會阻塞UI線程,而應該繪制UI並處理觸摸事件。
只是為此添加一種方法。 聲明一個變量int intResume = 0;
然后實現以下onResume:
@Override
public void onResume()
{
super.onResume();
intResume++;
// here put codes for after onCreate & "true resume"
if (intResume>1) {
intResume = 10;
// here put codes for "true resume"
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.