Активность Android, которая переопределяет функции, должна вызывать super.*
при создании собственного подкласса Activity мы переопределяем некоторые основные функции жизненного цикла Activity.
в каком из них мы должны вызов супер реализации, где мы должны а где он только хорошим способом ?
// 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();
список методов не является окончательным, не стесняйтесь добавлять больше функций, где мы должны знать, что делать.
для тех, кто интересуется, где должны будь super.methodName
поместить
местоположения вызовов super () в плагине Android Eclipse генерируется надежный код?
4 ответов
надо:
onCreate(Bundle savedInstanceState);
onStart();
onRestart();
onResume();
onPause();
onStop();
onDestroy();
onPostCreate(Bundle savedInstanceState);
onPostResume();
должен / не должен: (может быть полезно вызвать метод суперкласса, если вы не управляете состоянием activity или намеренно не изменяете поведение activity самостоятельно - в таком случае это может быть вредно)
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);
на самом деле при переопределении любого метода рекомендуется посмотреть исходный код переопределенного класса и посмотреть, что именно делает этот метод.
Это просто хорошая практика для вызова супер-реализации.
но иногда это обязательно, как в " onCreate ()", иначе в этом случае будет"ActivityInstantiateingexcepetion".
кроме того, несколько раз вы хотите переопределить супер-реализацию в некоторых случаях, например onBackPressed(){
if(myFlag){
// do my stuff
}
else {
// Do usual stuff on Back pressed
super.onBackPressed ();
}
таким образом, если ваш "myFlag" будет истинным, ваш материал будет выполнен иначе, будет выполнен нормальный onBackpressed.
все Activity
метод класса.В Java и Android, Если вы вызываете superclass
метод ,вы должны написать super.methodName