多窗口模式简介
由于手机屏幕大小的限制,传统情况下一个手机只能同时打开一个应用程序。从Android 7.0 开始引入多窗口模式功能,如许在一个屏幕中同时打开两个应用程序。
进入多窗口模式
注意:使用的是Genymotion模拟器
Google Nexus 5X-7.0.0
打开任意程序,长按Overview即可进入多窗口模式。
多窗口模式,同时打开两个应用
当横竖屏切换的时候,自动切换成左右分屏的多窗口模式
哈哈!这样就可以一边看电影一边聊微信了
多窗口模式下的生命周期
多窗口模式并不会改变原有的生命周期,只会将用户最近交互的那个活动设置为运行状态,而将另一个设置为暂停状态,如果用户又和暂停的活动交互,那么这个暂停的活动就会变成运行状态,之前运行的活动就会变成暂停状态。
当我们打开一个程序的时候,首先会执行主界面的
onCreate()->onStart()->onResume()
然后长按Overview按钮,进入多窗口模式:
onPause()->onStop()->onDestroy()->onCreate()->onStart()->onResume()
我们会发现,当进入多窗口模式的时候,Activity会被重建。
针对进入多窗口模式时活动会被重建,如果想改变这种情况,可以在清单文件中对Activity进行配置
<activity android:name=".activity.SplashActivity"
android:configChanges="orientation|keyboardHidden|screenLayout|screenSize">
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
</activity>
禁用多窗口模式
在清单文件的application节点
android:resizeableActivity="false"
resizeableActivity="false"表示禁用多窗口模式
resizeableActivity="true"表示启用多窗口模式
注意:这个属性只有当前项目的targetSdkVersion指定为24或者更高的时候才有效,否则会失效。
如果禁用多窗口模式,长按Overview会弹出Toast:
"App doesn't support split screen"
如果targetSdkVersion低于24,并且不允许横竖屏切换,应用也将不支持多窗口模式
//屏幕一直为竖直方向
android:screenOrientation="portrait"
重新允许程序,长按Overview会弹出Toast:
"App doesn't support split screen",说明已成功禁用多窗口模式。