Android-7(API24)前幾天風風火火發布,小的里面下載最新的體驗一把,當然是模擬器了,說實話然并卵。下面是小的錄的gif先睹為快吧。
體驗
實現
實現分屏,還是蠻簡單的,代碼層,當然底層實現暫未研究,不過真心不知道在這小小的手機上分屏有什么用處,好了廢話不說了現在就是擼一把。
要實現分屏只要在AndroidManifest.xml定義一個屬性就行,默認是支持分屏的
<activity
android:name=".MainActivity"
// 就是他、就是他、就是他,如果不想支持給為false,默認是true
android:resizeableActivity="true">
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
</activity>
是不是很簡單呢,是你想的簡單了,這樣變化后什么周期呢?
將Activity啟動到另外一個分屏中
// 啟動時添加Intent.FLAG_ACTIVITY_LAUNCH_ADJACENT這個flags,就可以把Activity啟動到另一個分屏中
Intent intent = new Intent(this, AdjacentActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_LAUNCH_ADJACENT | Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
不支持分屏時
- 不支持分屏,沒有設置 Intent.FLAG_ACTIVITY_NEW_TASK直接啟動到當前分屏中
- 設置了 Intent.FLAG_ACTIVITY_NEW_TASK,取消分屏,全部顯示
分屏變化監聽
新的api中添加了下面的回到,通知分屏變化
// 當屏幕變化是回調
@Override
public void onMultiWindowModeChanged(boolean isInMultiWindowMode) {
super.onMultiWindowModeChanged(isInMultiWindowMode);
Log.i(TAG, "****** onMultiWindowModeChanged() ******");
}
生命周期變化
Activity的分屏變化還是和原來差不多,可以看成是Activity 的切換(下文log,為了好看去掉了時間)
-
長按菜單鍵(通常是方快建)進入分屏狀態
com.mz.android_7.MainActivity****** onMultiWindowModeChanged() ****** com.mz.android_7.MainActivity****** onPause() ****** com.mz.android_7.MainActivity****** onStop() ****** com.mz.android_7.MainActivity****** onDestroy() ****** com.mz.android_7.MainActivity****** onCreate() ****** com.mz.android_7.MainActivity****** onStart() ****** com.mz.android_7.MainActivity****** onResume() ****** com.mz.android_7.MainActivity****** onPause() ****** // // Activity銷毀重建,此時當前Activity進入到pause狀態,不在有焦點
-
點擊當前分屏
com.mz.android_7.MainActivity****** onResume() ****** // 進入到resume狀態
-
點擊另一分屏
com.mz.android_7.MainActivity****** onPause() ****** // 再次進入到pause狀態,如果不進行其他操作,來回點擊,兩個狀態來回切換
-
退出分屏
com.mz.android_7.MainActivity****** onPause() ****** com.mz.android_7.MainActivity****** onStop() ****** com.mz.android_7.MainActivity****** onDestroy() ****** com.mz.android_7.MainActivity****** onCreate() ****** com.mz.android_7.MainActivity****** onStart() ****** com.mz.android_7.MainActivity****** onResume() ****** com.mz.android_7.MainActivity****** onMultiWindowModeChanged() ****** // Activity銷毀重建,進入resume狀態,分屏退出
總結
Android-7的分屏在我看來沒什么用處,但是本質是提高了用戶的體驗,當然是在運行流暢的前提下。它的本質還是同一時刻只有一個Activity處于resume狀態,所以并沒有太高深的東西,只是對于生命周期的理解要加強。