在 React Native 中安排任务的最佳方式是什么?

What is the best way to schedule a task in react native?

在 Android 和 iOS 中分别有不同的 运行 后台任务方式。我在堆栈溢出时也发现了 What is the best way to schedule task in android?

我想知道哪种方法最好只使用 react-native。对于每天或每隔几个小时必须 运行 的任务,使用 setIntervalsetTimeout 是否足够好?

这些任务不会被 OS 杀死吗?

有什么想法或建议吗?

我会回答我自己的问题,看看这个信息是否可以被任何正在寻找它的人使用。

由于不同的移动设备 OS 往往会终止后台作业,或者停止它们以节省电量,因此在 React Native 中安排任务的确定性方法很少。我使用以下组合:

当心恶龙:如果您的应用程序在系统唤醒后滥用执行时间或内存使用,它可能会被关闭。 phone 没电后,您可能需要为所有听众补充水分。因此,用户仍然需要与您的应用进行大量交互。

更新: 来自 Android O 有非常严格的后台执行限制。使用 HeadlessJSTask 服务时,如果您希望它持续几秒钟以上,请确保将其作为前台服务启动。它可能需要一个通知。请注意,仅加载捆绑包最多可能需要几秒钟,具体取决于您的应用和设备。

事实上,没有任何足够的方法。但我们可以将 mauron85 评论为一种比 android 上的其他方法更好的方法,但它在 IOS 上也不能完美运行。例如,如果应用程序已被用户杀死,作业将无法继续工作,或者无法控制作业执行数量,每次设备改变其位置时作业都会触发。

其他组件如react-native-background-fetchreact-native-background-task有作业执行周期的限制(作业重复每 15 分钟后并且没有办法减少这个时间段)并且他们只在 android.

上工作

如果 Facebook react native 对这个问题有一些实用的解决方案,那就太好了。