Android PiP 模式和应用生命周期

Posted

技术标签:

【中文标题】Android PiP 模式和应用生命周期【英文标题】:Android PiP mode and app life cycle 【发布时间】:2018-12-27 17:31:53 【问题描述】:

我正在向我的应用程序添加画中画模式,但发现生命周期存在问题。官方文档说:“当你的activity切换到画中画时,系统将activity置于暂停状态,并调用activity的onPause()方法。视频播放不应暂停,如果activity在画中画模式下暂停,则应继续播放。 "但在我的情况下,进入画中画模式后我有以下顺序:

07-19 17:03:40.094 Enter PiP mode
07-19 17:03:40.193 OnPause(
07-19 17:03:40.780 OnStop()
07-19 17:03:40.788 OnDestroy()
07-19 17:03:40.927 OnCreate()
07-19 17:03:40.937 OnStart()
07-19 17:03:41.014 OnResume
07-19 17:03:41.024 OnPause()

怎么了?之后,我在一个小画中画窗口中重新启动了一个应用程序。

public void Pip_Click(View v) 

        if (android.os.Build.VERSION.SDK_INT >= 26) 
            //Trigger PiP mode
            try 
                Rational rational = new Rational(simpleExoPlayerView.getWidth(), simpleExoPlayerView.getHeight());

                PictureInPictureParams mParams = new PictureInPictureParams.Builder()
                                .setAspectRatio(rational)
                                .build();

                appendLog("enter PiP mode");
                enterPictureInPictureMode(mParams);

                setFullScreen();
             catch (IllegalStateException e) 
                e.printStackTrace();
            
         else 
            Toast.makeText(MainActivity.this, "Not supported", Toast.LENGTH_SHORT).show();
        

    

来自清单:

<activity
            android:name=".MainActivity"
            android:configChanges="orientation|keyboardHidden|screenSize"
            android:supportsPictureInPicture="true"
            android:label="@string/app_name"
            android:launchMode="singleTask">

        </activity>

【问题讨论】:

【参考方案1】:

通过改变这个解决了我的问题:

<activity
            android:name=".MainActivity"
            android:resizeableActivity="true"
            android:configChanges="orientation|keyboardHidden|screenSize|smallestScreenSize|screenLayout"
            android:supportsPictureInPicture="true"
            android:label="@string/app_name"
            android:launchMode="singleTask">
        </activity>

【讨论】:

这解决了我的问题,但解释会让答案很好。

以上是关于Android PiP 模式和应用生命周期的主要内容,如果未能解决你的问题,请参考以下文章

Android进阶知识——Activity的生命周期和启动模式

Android进阶知识——Activity的生命周期和启动模式

android activity的生命周期和启动模式

Android Activity生命周期与启动模式

Android查缺补漏--Activity生命周期和启动模式

Activity生命周期以及启动模式对生命周期的影响