javascript - react-native-background-timer 在 Android 上不一致地用于录制音频

标签 javascript android react-native ecmascript-6 react-native-android

我正在使用 BackgroundTimer来自 react-native-background-timer在 Android 的 React native 项目中。

我希望用户能够在设定的持续时间后录制音频(例如,在 30 分钟后录制 5 分钟)。

我遇到的问题是它“有时”有效。操作系统似乎经常杀死进程——尤其是在执行时间较长的情况下。

代码摘录:

import BackgroundTimer from 'react-native-background-timer';
...

// Start a timer that runs once after X milliseconds
const timeout1 = BackgroundTimer.setTimeout(() => {

    // Should work when when app is the the background
    this.onStartRecord();

    const timeout2 = BackgroundTimer.setTimeout(() => {
        this.onStopRecord();
        BackgroundTimer.clearTimeout(timeout2);
    }, millisRecording);

    // Clear first timeout
    BackgroundTimer.clearTimeout(timeout1);

}, millisUntilRecordMoment);

其余代码在这里:https://github.com/bentaly/listen/blob/master/App.tsx

我之前也尝试过在 Expo 中构建它,但没有成功。

有没有办法保证这个操作会奏效?

最佳答案

您将有大约 40 秒的时间来调用您的函数并在后台状态或手机处于 sleep 状态时调用完成处理程序。
如果你没有按时完成它,iOS 会杀死你的应用程序。如果你不遵守规则,iOS 会给你更少的醒来机会。有关背景模式的更详细用法,您可以查看以下教程
这是由于应用程序开发人员滥用此机制,耗尽了客户的设备电池。
注:看门狗超时约为 40 秒。

关于javascript - react-native-background-timer 在 Android 上不一致地用于录制音频,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62231218/

相关文章:

javascript - 如何将键盘按钮 "Return"更改为 "Search"以在 UIWebView 中输入?

android - 如何通过 ACTION_VIDEO_CAPTURE 操作将文件输出设置为 mp4?

ios - RNFIREBASE MESSENGER 不适用于 iOS,但适用于 Android

android - React Native,当用户在一段时间后恢复应用程序时刷新 Activity ?

react-native - 如何从抽屉导航器菜单导航到特定选项卡 native react

javascript - select2 bootstrap 大小问题

javascript - 如何检测鼠标何时在某个圆圈之外?

javascript - 如何向 JSON 数组添加一个值?

javascript - 如何在 react-native 中使用和更新全局变量?

Android 库发布在 bintray 上,但在 jcenter 上不可用