- 资料来源《第一行代码》
多窗口下的生命周期
- 多窗口模式并不会改变活动原有的生命周期。只是会将用户最近交互过的那个活动设置为运行状态(onResume),而将多窗口模式下另一个可见的活动设置为暂停状态(onPause)。如果用户又去和暂停的活动进行交互,那么该活动就变成运行状态,之前处于运行状态的活动就变成暂停状态。
多窗口会改变应用大小,先启动activity,再进入多窗口模式,activity会重建。重建后,进入onPause方法。
在多窗口模式下,用户仍然可以看到处于暂停状态的应用,所以视频播放之类的应用在此刻应该继续播放视频才对。因此,我们最好不要在activiy的onPause中暂停播放,而是在onStop中暂停,onStart中恢复。
活动不被重建方法:
<activity android:name=".MainActivity"
android:configChanges="orientation|keyboardHidden|screenSize|screenLayout"
android:screenOrientation="portrait">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
进入多窗口,或者横竖屏切换时,回调该方法:
@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
}
禁用多窗口:
android:resizeableActivity="true|false"
默认为true,表示支持多窗口。false为不支持。
注意,这个参数只有在targetSdkVersion指定成24或更高版本才有用。
如果一些老项目没有将targetSdkVersion指定到24,怎么办呢,有个方法,就是写死横竖屏。这样,应用也不会支持多窗口了。
写死横竖屏:
android:screenOrientation="portrait|landscape"
portrait:竖屏
landscape:横屏