android7.0 的API開始有了分屏功能,在測試時註意到主頁面在分屏模式下,頁面所占比例在增大或者減小的時候都會調用oncreat方法,所以查資料總結一下分屏對頁面的生命周期的影響以及開發時的註意事項: App頁面從全屏模式切換到分屏模式,會經歷銷毀後重建的過程,所以它的Activity生命周 ...
android7.0 的API開始有了分屏功能,在測試時註意到主頁面在分屏模式下,頁面所占比例在增大或者減小的時候都會調用oncreat方法,所以查資料總結一下分屏對頁面的生命周期的影響以及開發時的註意事項:
App頁面從全屏模式切換到分屏模式,會經歷銷毀後重建的過程,所以它的Activity生命周期會從oncreat()重新走一遍。
1、禁用分屏模式
一般情況下,App預設都允許分屏模式。但有的開發者認為自己的App只有在全屏狀態下才能正常使用,要是被分屏的話用起來會很難受,這時候就得對該App禁用分屏模式。具體操作是在AndroidManifest.xml的application節點添加屬性android:resizeableActivity="false",表示應用頁面不接受分屏;如此一來,即使用戶開啟了分屏模式,切換到該應用時仍會強制回到全屏模式。
2、分屏切換時Activity的生命周期
App頁面從全屏模式切換到分屏模式,它的Activity生命周期會經歷銷毀後重建的過程,如果開發者想保持App頁面在分屏前的模樣,則需給該頁面的activity節點加上以下的屬性描述 android:configChanges="screenLayout|orientation"
3、分屏在視頻播放時的註意事項
對於視頻播放頁面,需要在它的activity節點加上如下屬性描述,android:configChanges="screenLayout|orientation"
對於視頻播放頁面,建議Activity代碼不在onPause方法中暫停播放視頻,而應當在onStop方法中暫停播放,併在onStart方法中恢復播放視頻,以避免無謂的資源浪費
4、獲取分屏模式的狀態及狀態切換的監聽
App運行過程中,若想獲知當前是否處於分屏模式,則可調用isInMultiWindowMode方法,該方法返回true表示處於分屏模式,返回false表示處於全屏模式。
每當進入多視窗,或者退出多視窗的時候,應用會觸發Activity頁面的onMultiWindowModeChanged方法。通過重載該方法,開發者可以即時收到分屏與全屏的切換通知。