Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/198.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 图像流ionic webview/cordova应用程序依赖onStop()而不是onPause()_Android_Cordova_Ionic Framework - Fatal编程技术网

Android 图像流ionic webview/cordova应用程序依赖onStop()而不是onPause()

Android 图像流ionic webview/cordova应用程序依赖onStop()而不是onPause(),android,cordova,ionic-framework,Android,Cordova,Ionic Framework,我有一个特定的情况,即需要处理的特定于应用程序的情况。我的应用程序是一款爱奥尼亚视频监控应用程序,它使用cordova作为各种插件。它显示流式JPEG图像作为其功能的一部分 我需要处理的场景包括: 如果应用程序进入后台,它需要清除视频资源,这会导致视频流停止 如果应用程序在多窗口模式(Android 7.0+)下运行,则需要在拆分窗口模式下并排运行另一个应用程序,即使用户正在与另一个应用程序交互 如果应用程序在多窗口模式下运行,并且用户实际将其切换到视图之外,则需要清除视频资源 尽管如此,以下是

我有一个特定的情况,即需要处理的特定于应用程序的情况。我的应用程序是一款爱奥尼亚视频监控应用程序,它使用cordova作为各种插件。它显示流式JPEG图像作为其功能的一部分

我需要处理的场景包括:

  • 如果应用程序进入后台,它需要清除视频资源,这会导致视频流停止
  • 如果应用程序在多窗口模式(Android 7.0+)下运行,则需要在拆分窗口模式下并排运行另一个应用程序,即使用户正在与另一个应用程序交互
  • 如果应用程序在多窗口模式下运行,并且用户实际将其切换到视图之外,则需要清除视频资源
  • 尽管如此,以下是困境:

  • 如今,浏览器应用程序不再将
    onStop()
    作为回调。我们只得到
    onPause()
    。在多窗口中运行时会出现问题,因为当用户点击另一个应用程序时,我的应用程序会得到一个
    onPause()
    ,并认为它将进入后台并清除视频资源。显然,这是不可取的,观众希望视频播放继续(不是流式视频而是流式图像,因此我们这里没有真正的PIP视频播放器)

  • 在JS land中,无法检测多窗口模式

  • 根据文档,现在需要区分
    stop()
    pause()
    (作为推论,
    resume()
    start()
    )以获得视频播放等用户体验

    鉴于上述具体要求,我已达成以下解决方案:

  • 这让我能够捕获
    onStop()
    onStart()
    和多窗口状态(这是我几天前询问的另一个相关问题的结果)

  • 因此,我的方法是,如果我在Android上运行,我将不会捕获浏览器
    pause
    resume
    事件,而只依赖
    onStop()
    onStart()
    (简化了一个事件没有两个回调的过程,暂停和停止/恢复和启动)

  • 我一直在android应用程序上测试何时调用
    onPause()
    ,何时调用
    onStop()
    。在我看来,他们总是被召集在一起。我已经阅读了
    活动对话框
    的案例。根据那里的描述,这种情况对我的应用来说似乎很好,因为我不需要清理视频资源

  • 有人认为这种方法有问题吗?也就是说,如果在android上运行,不要捕获
    onPause()
    browser事件,而是使用cordova
    onStop()
    ?当我进行测试时,我可能遗漏了一些其他人可能愿意给我建议的明显内容

    当我的应用程序实际移动到后台且其UI未显示时(因为某些浏览器问题,否则会导致大量泄漏),我的应用程序能够释放视频资源是非常关键的,因此重要的是我不会错过任何活动。因此,我想确保对
    onStop()
    进行的
    onPause()
    开沟不会导致错过的情况。我还需要支持运行Android 4.2和4.4的用户,我使用的是现在已经不存在的crosswalk库,因此我确实需要确保通过采用这种方法,我不会寻求一种只适用于现代系统的解决方案。

    回答我自己的问题: 我已经测试这种方法有一段时间了,我没有看到任何明显的问题——Android的旧版本和新版本似乎都表现良好