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状态,所以并没有太高深的东西,只是对于生命周期的理解要加强。