多窗口模式的什么周期

Android 7.0中支持多窗口任务处理,即多窗口模式。所谓的多窗口模式,就是在大屏幕设备中,同时打开两个应用程序,如你可以一边网上冲浪,一边发微信给自己的朋友。
这里看下多窗口模式下的生命周期。

多窗口模式下的生命周期

将build.gradle中的targetSdkVersion设置为24(或比24更高),创建项目并在各个生命周期上加入Log日志:

public class MoonMultWindow extends AppCompatActivity {
    private static final String TAG = "MultWindow";
    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.moonmultwindow_activity);
        Log.e(TAG, "onCreate");
    }

    @Override
    protected void onStart() {
        super.onStart();
        Log.e(TAG, "onStart");
    }

    @Override
    protected void onResume() {
        super.onResume();
        Log.e(TAG, "onResume");
    }

    @Override
    protected void onPause() {
        super.onPause();
        Log.e(TAG, "onPause");
    }

    @Override
    protected void onStop() {
        super.onStop();
        Log.e(TAG, "onStop");
    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
        Log.e(TAG, "onDestroy");
    }
}

长按Overview按钮进入多窗口模式,打印如下日志:
这里写图片描述
从上面可以看出 MoonMultWindow 经历了一个重新创建的过程,最终停留在onPause状态,当点击 MoonMultWindow 项目的窗口时,MoonMultWindow 才会获取焦点进入onResume状态当把焦点切换到其他应用程序上,MoonMultWindow 会进入onPasue状态
接下来长按Overview按钮退出多窗口模式,查看Log日志:
这里写图片描述
MoonMultWindow 经历了销毁的过程,然后是一个重新恢复的过程,最终会停留在onResume状态。
通过上面的Log得知了多窗口模式生命周期的规则,那么此前编程的一些惯用方式也会相应地改变。比如,在播放视频时进入多窗口模式之际,这个视频应该还是播放的才对,因此不能在onPasue方法种关闭视频,而是要在onStop方法中关闭视频,并在onStart方法中恢复视频的播放

禁用多窗口模式

多窗口模式未必适用于所有应用。如果想要禁用多窗口模式,只需在 AndroidManifest.xml 中加入如下属性即可:

<application
        ...
        android:resizeableActivity="false"
        ...
</application>

如果不加此属性,则默认是支持多窗口模式的。将该属性设置为 false ,就不支持多窗口模式。当长按Overview按钮想要进入多窗口模式时,会发现 MoonMultWindow 项目无法进入多窗口模式,并会弹出 Toast 来提醒用户当前应用不支持多窗口模式。
需要注意的是 targetSdkVersion 设置的值小于24时,android:resizeableActivity=”false” 这一属性不会起作用。这种情况下,解决方案是设置应用不支持横竖屏切换,比如讲 MoonMultWindow 设置为只支持竖屏,如下:

<activity android:name=".multwindow.MoonMultWindow"
            android:screenOrientation="portrait"/>

这时我们长按Overview按钮,会发现无法进入多窗口模式。

猜你喜欢

转载自blog.csdn.net/qq_24382363/article/details/79700000