When creating own Activity subclass, we are overriding some of the basic Activity lifecycle functions.
In which of these we must call super implementation, where we should and where is it only good manner ?
// base lifecycle
onCreate(Bundle savedInstanceState);
onStart();
onRestart();
onResume();
onPause();
onStop();
onDestroy();
finalize();
onUserLeaveHint();
// instance state
onSaveInstanceState(Bundle outState);
onRestoreInstanceState(Bundle savedInstanceState)
// others
onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo);
onCreateOptionsMenu(Menu menu);
onOptionsItemSelected(MenuItem item);
onContextItemSelected(MenuItem item);
onMenuItemSelected(int featureId, MenuItem item);
onActivityResult(int requestCode, int resultCode, Intent data);
onBackPressed();
List of methods is not final, feel free to add more functions, where we should know, what to do.
For those who are interested in, where should be super.methodName
placed
Locations of super() calls in Android Eclipse Plugin generated code reliable?
must:
onCreate(Bundle savedInstanceState);
onStart();
onRestart();
onResume();
onPause();
onStop();
onDestroy();
onPostCreate(Bundle savedInstanceState);
onPostResume();
should / shouldn't: (may be helpful to call superclass method, unless you manage activity's state or deliberately alter activity's behavior yourself - in such case it may be harmful)
onSaveInstanceState(Bundle savedInstanceState);
onRestoreInstanceState(Bundle savedInstanceState);
onBackPressed();
onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo);
onCreateOptionsMenu(Menu menu);
onOptionsItemSelected(MenuItem item);
onContextItemSelected(MenuItem item);
onMenuItemSelected(int featureId, MenuItem item);
Actually, when overriding any method, it's a good practice to look at the source code of the overridden class and see what exactly this method does.
Its just a good practice to call the super implementation.
BUT some times its mandatory, like in "onCreate()", else there will be an "ActivityInstantiateingexcepetion"in this case.
Also, some times you want to override the super implementation in some cases, like onBackPressed(){
if(myFlag){
// do my stuff
}
else {
// Do usual stuff on Back pressed
super.onBackPressed ();
}
So this way if your "myFlag" will be true, your stuff will be done else normal onBackpressed will be executed.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With