面试常常会被问到的:
Q:能说一下Activity的生命周期吗?
Activity生命周期例如以下:
onCreat
onStart
onResume
onPause
onStop
onDestory
外加一个 onRestart
就像图示一样,当一个activity第一次启动时会调用的函数各自是
onCreat
onStart
onResume方法
此时activty会正常执行
。
当出现如图所看到的。屏幕弹出一个dialog遮住activity而且activity失去焦点时,但这是activity还显示一部分时。
会调用onPause,当dialog dismiss时activity又又一次回到前台会调用onResume方法。
第二种情况,即A activtiy跳转到另外一个B activity,第一个A activity被全然覆盖时会调用
onPause onStop方法,当从B activity返回时,假设此时A activity未被销毁(普通情况下不会被销毁),
会分别调用 onRestart onStart onResume方法。
然后activity进入正常执行状态。
这大致就是面试中常回答activity生命周期调用方法。
以下再加一个onCreat(Bundle savedInstanceState)
savedInstanceState什么时候会用到呢 ?
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">
比如当用户在上图搜索框中输入了“美女”,但这是用户清理内存将这个进程干掉了,我们希望用户进入这个activity界面保存着这个搜索框中的内容怎么做呢
这时候能够调用这种方法
@Override
protected void onSaveInstanceState(Bundle savedInstanceState)
{
super.onSaveInstanceState(savedInstanceState);
savedInstanceState.putString("keyText", searchEditText.getText().toString());
}
在onCreat方法中运行下列语句
if (savedInstanceState != null)
{
keyText = savedInstanceState.getString("keyText’");
searchEditText.setString(keyText);
}
就可以。