首先,我们新建一个安卓项目在MainActivity类中实现Activity生命周期的几个方法以及各个方法的作用与调用时机:
//创建的方法
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
System.out.println("onCreate");
}
//销毁的方法
protected void onDestroy() {
System.out.println("onDestroy");
super.onDestroy();
}
//在onCreate方法被调用之后调用的 acticity界面可以用的时候调用的方法 继续播放视频
@Override
protected void onStart() {
System.out.println("onStart");
super.onStart();
}
//activity用户不在使用的时候调用。一般的情况下暂停视频播放
@Override
protected void onStop() {
System.out.println("onStop");
super.onStop();
}
//继续 获取焦点
@Override
protected void onResume() {
System.out.println("onResume");
super.onResume();
}
//暂停 失去焦点
@Override
protected void onPause() {
System.out.println("onPause");
super.onPause();
}
接着,我们运行程序,待页面出现之后,旋转手机让手机横屏。我们时候我们查看控制台的打印信息。
打印信息
根据Activity的生命周期和以上打印信息我们可以推断,在屏幕旋转之后,页面是把之前的销毁掉,而后重新创建了页面,这显然不是我们想要的效果,那么该如何解决呢?其实在manifest文件中做一下配置就能解决了。
方法一:做法是把横竖屏写死 朝向固定
<activity android:name=".MainActivity" android:screenOrientation="portrait">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
方法二:设置MainActivity不受某些操作影响,不会销毁重新创建
<activity android:name=".MainActivity" android:configChanges="orientation|keyboard|screenSize">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
再次运行并旋转手机等操作,发现Activity并不会出现销毁创建销毁创建的情况。
网友评论