android - 依赖 onStop() 而不是 onPause() 进行图像流式传输 ionic-webview/cordova 应用程序

标签 android cordova ionic-framework

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

我需要处理的场景:

  1. 如果应用进入后台,需要清理视频资源,导致视频流停止
  2. 如果应用在多窗口模式下运行 (Android 7.0+),它需要在拆分窗口模式下与另一个应用并排运行,即使用户正在与另一个应用交互也是如此。
  3. 如果应用在多窗口模式下运行并且用户实际将其切换出 View ,则需要清理视频资源

话虽如此,这里有以下困境:

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

  2. 在 JS 领域,没有办法检测多窗口模式

根据multi-window docs,现在有必要区分 stop()pause()(作为推论,resume() start()) 用于用户体验,例如播放视频。

鉴于我上述的具体要求,我得出了以下解决方案:

  1. 我已经 developed a plugin这让我可以捕获 onStop()onStart() 以及多窗口状态(由于另一个相关的 question 我几天前在 SO 上询问过)

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

  3. 我一直在我的 android 应用程序上测试何时调用 onPause() 和何时调用 onStop() 的情况。在我看来,他们总是被召集在一起。我读过 this may not be trueActivityDialog 的情况下。根据那里的描述,这种情况似乎适合我的应用,因为我不需要清理视频资源。

有没有人发现这种方法有问题——也就是说,如果在 android 上运行,不要捕获 onPause() 浏览器事件,而是使用 cordova onStop() ?在我进行测试时,我可能会遗漏一些明显的东西,而其他人可能会建议我这样做。

关键当我的应用程序实际移动到后台并且它的 UI 不显示时,我的应用程序能够释放视频资源(因为由于某些浏览器问题,它会导致大泄漏,否则)因此重要的是我不要错过任何 Activity 。因此,我想确保为 onStop() 放弃 onPause() 不会导致遗漏情况。我还需要支持运行 Android 4.2 和 4.4 的用户,我为此使用了现已失效的人行横道库,因此我真的需要通过采用这种方法来确保,我不会寻求仅适用于现代系统的解决方案。

最佳答案

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

关于android - 依赖 onStop() 而不是 onPause() 进行图像流式传输 ionic-webview/cordova 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51949440/

相关文章:

android - 具有动态选择的每行布局的 ListView

iOS PhoneGap 2.3 Config.xml 困惑

javascript - Ionic Android - 键盘未显示在输入焦点上

ionic-framework - ionic 应用程序上的 Youtube iframe 生成播放图标背景

javascript - 如何使用 Ionic 中的 Canvas 绘制照片,然后在照片顶部绘制形状?

android - 连接到 openfire 服务器时 Samck 4.1 错误 (org.jivesoftware.smack.sasl.SASLErrorException : SASLError using DIGEST-MD5: not-authorized)

android - onCreateView 方法何时被调用?以及 Activity 生命周期有多少次?

android - Gradle 同步阻止应用程序运行

android - 任务 ':transformDexArchiveWithExternalLibsDexMergerForDebug' 执行失败

iphone - 未找到 ionic 目标设备