Android сценарий, где ondestroy () вызывается без onpause () или onstop()
несколько дней назад меня попросили записать сценарии, в которых ondestroy() вызывается без вызова onpause() или onstop (). Возможно ли это? Если да, пожалуйста, объясните.
4 ответов
если вы попробуете ниже кода, Вы найдете сценарий, где onDestroy()
действительно вызывается в то время как onPause()
и onStop()
пропускаются обратные вызовы жизненного цикла.
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
finish();
}
@Override
protected void onDestroy() {
// TODO Auto-generated method stub
super.onDestroy();
Log.e("MainActivity", "onDestroy");
}
@Override
protected void onPause() {
// TODO Auto-generated method stub
super.onPause();
Log.e("MainActivity", "onPause");
}
@Override
protected void onStop() {
// TODO Auto-generated method stub
super.onStop();
Log.e("MainActivity", "onStop");
}
следовательно, если вы называете finish()
, как только Activity будет создана, система вызовет onDestroy()
напрямую.
это происходит, когда мы вызываем метод finish в activity
Образец:
внутри вашей деятельности call this.finish();
onPause () и onStop() не будут вызываться, если finish() вызывается из в onCreate() метод. Это может произойти, например, если вы обнаружьте ошибку во время onCreate () и вызовите finish () в результате. В такой случай, однако, любая очистка, которую вы ожидали сделать в onPause() и onStop() не будет выполняться.
хотя onDestroy() является последним обратным вызовом в жизненном цикле активность, стоит отметить, что этот обратный вызов может быть не всегда призывали и не должны полагаться на уничтожение ресурсов. Есть ситуации, когда система просто убьет активность процесс хостинга без вызова этого метода (или любого другого) в нем, поэтому он не должен использоваться для того, чтобы делать вещи, которые должны оставаться вокруг после того, как процесс уйдет.Это лучше иметь ресурсы, созданные в onStart () и onResume (), и уничтожьте их в onStop() и onPause, соответственно.
справочные - https://www.toptal.com/android/interview-questions
Это возможно, когда мы вызываем finish () непосредственно в действии. Когда finish() вызывается в activity, onDestroy () выполняется и выполняет следующие действия:
- отклонить любые диалоги, которыми управляла активность.
- закройте все курсоры, которыми управляла активность.
- закрыть любой открытый диалог поиска