为了照顾部门里的小白,把这个超级基础的东西也写一下,也不放网上的那些图,直接来个Demo 然后通过看日志文件,再了解其生命周期 先上java文件代码
public class ActivityLifecycle extends AppCompatActivity {
private static final String TAG = "ActivityLifecycle";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_lifecycle);
Log.d(TAG, "----->onCreate(),在Activity第一次被创建时调用");
}
@Override
protected void onStart() {
super.onStart();
Log.d(TAG, "----->onStart(),在Activity由不可见变为可见时调用");
}
@Override
protected void onResume() {
super.onResume();
Log.d(TAG, "----->onResume(),在Activity处于运行状态时调用");
}
@Override
protected void onPause() {
super.onPause();
Log.d(TAG, "----->onPause(),在Activity暂停时调用");
}
@Override
protected void onStop() {
super.onStop();
Log.d(TAG, "----->onStop(),在Activity停止时调用");
}
@Override
protected void onRestart() {
super.onRestart();
Log.d(TAG, "----->onRestart(),在Activty从停止状态变为运行状态时调用");
}
@Override
protected void onDestroy() {
super.onDestroy();
Log.d(TAG, "----->onDestroy(),在Activty销毁前调用");
}
}
由上可见一共有七个方法,先看一下七个方法的作用 onCreate() ------------> 表示Activity正在被创建 onStart()------------> activity变为在屏幕上对用户可见时调用 onResume()------------> 开始与用户交互时调用 onPause()------------> Activity正在停止,失去焦点(!!可见但是不可操作) onStop()------------> Activity即将停止,且处于不可见状态 onRestart() ------------> Activity正在重新启动 onDestroy()------------> Activity正在被销毁
下面开始利用日志文件来看看在什么情况下运行什么方法 一.第一次启动Activity
二.点击Home键直接返回桌面
三.当我们从后台切回到这个Activity
四.从当前Activity跳转到另一个Activity
五.从另一个Activity回到这个Activity(返回键)
六.从另一个Activity跳回这个Activity
七.屏幕转换(竖屏------->横屏)
八.点击返回直接退出应用(返回时Activity在栈底) ----> 销毁Activity
然后再去网上找个Activity生命周期图,就很容易理解了 1.激活Activity: onCreate()——>onStart()——>onResume() (已经是可见状态了!!!) 2.切换Activity onPause()——>onStop() 3.返回Activity onRestart()——>onStart()——>onResume() 4.销毁Activity onPause()——>onStop()——>onDestroy() 5…屏幕转换 当屏幕旋转的时候Activity先是被销毁之后又被重建。且虽然Activity被重建了,但是如果你在屏幕旋转前写了一个文本输入框且在里面输入了内容,你会发现控件里的内容还在。解释如下: 因为当Activity不是正常退出的时候,它会在调用onStop()前调用onSaveInstanceState方法来保存一些数据,当Activity重建的时候,这个方法所存储的数据会以Bundle作为参数传递给onCreate,所以我们可以用参数来判断这个Activity是新建的还是重建的,如果是重建的,则可以从Bundle中取出数据来恢复界面。