多窗口模式簡介
由于手機屏幕大小的限制,傳統情況下一個手機只能同時打開一個應用程序。從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",說明已成功禁用多窗口模式。