在React Native Android和iOS中使用Set Interval

时间:2019-03-07 09:06:34

标签: javascript react-native

React Native Video和计时器(已使用setInterval)都在前台工作,并且当应用程序在后台时计时器停止。但是视频仍在后台播放。

这意味着,当应用程序暂停时,所有setInterval的运行和(以及setTimeouts待处理)也会这样做。

headlessJs api仅适用于android在后台运行任务。

  

如果我使用headlessJs,不是因为本机运行计时器而使产品痛苦吗?


有一些所需的库,

react-native-background-job-使用headlessJs,仅在android中工作。

react-native-background-task-在android中使用headlessJs,而ios使用围绕react-native-background-fetch库的代理(仅支持单个任务,任务执行的确切时间无法预测)

react-native-background-fetch

  

如果我使用这些库,是否可以在后台服务中使用setInterval?

     

为什么只有音乐播放器在后台工作?

1 个答案:

答案 0 :(得分:1)

我从react-native-background-timer库中找到了一个解决方案。

在iOS中,执行以下代码后,我们可以启动计时器或在后台进行任何本机操作。

即使我们在设备中使用其他应用程序,背景计时器也可以工作。 (例如:itunes,whatsup)

// Import the library
import BackgroundTimer from 'react-native-background-timer';

// Start the timer
BackgroundTimer.start();

// Start a timer that runs continuous after X milliseconds
const intervalId = BackgroundTimer.setInterval(() => {

// this will be executed every 200 ms
// even when app is the the background
console.log('tic');

}, 200);

在android中,

// Import the library
import BackgroundTimer from 'react-native-background-timer';

// Start a timer that runs continuous after X milliseconds
const intervalId = BackgroundTimer.setInterval(() => {

   // this will be executed every 200 ms
   // even when app is the the background
   console.log('tic');
}, 200);

注意:使用该设备进行测试并且不信任模拟器