问题
I have an app where after sign in it throws you at the welcome screen. I put a Toast to see when the onResume fires, but it also fires after 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();
}
It comes from:
//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();
I am baffled. Please offer some experience here
回答1:
Well i do not understand very well what you are trying to ask or what is the question here. BUT i will recommend you to read the "Android Activity LifeCycle" and that will clear many of your doubts cause in android is not the same as other languages or platforms.
Note: The OnResume is call each time the activity is "visible", so as many times as your activity becomes visible, the same number of times your method will be called. If you just want to call the method the first time, then the OnCreate is what your looking for.
回答2:
Please take a look at the activity lifecycle state chart.
This is the order the methods are being called:
- onCreate()
- onStart()
- onResume()
- -> activity is running
http://developer.android.com/reference/android/app/Activity.html#ProcessLifecycle
回答3:
onResume
after onCreate
is the normal Activity Lifecycle
The reason you get onStart
and onResume
called even on the first launch is that it makes writing code easier.
You can assume that before you return to onResume
you will get onPause
called since there is no way to exit the "resumed" state without onPause
. That behavior can be used to initialize things in onResume
and to de-initialize them without further checking in onPause
. If you can't be sure that onResume
was called at the start that whole scheme breaks.
On a sidenote: Don't access your database from any of the onXYZ
methods since that will block the UI thread which should rather draw the UI and handle touch events.
来源:https://stackoverflow.com/questions/12203651/why-is-onresume-called-when-an-activity-starts