以本机方式安排任务的最佳方法是什么?

时间:2016-10-09 17:27:32

标签: react-native react-native-android

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

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

这些任务不会被操作系统杀死吗?

有任何想法或建议吗?

2 个答案:

答案 0 :(得分:17)

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

由于不同的移动操作系统倾向于杀死后台作业,或者将它们停止以节省电池,因此很少有确定性方法可以在本机中调​​度任务。我使用以下组合:

小心龙:如果在系统唤醒后滥用执行时间或内存使用情况,您的应用可能会被关闭。手机没有电池后,您可能需要为所有听众补充水分。因此,用户仍需要与您的应用进行大量互动。

<强>更新: 从Android O开始,有非常严格的后台执行限制。使用HeadlessJSTask服务时,如果您希望它持续时间超过几秒,请确保将其作为前台服务启动。它可能需要通知它。考虑到只加载捆绑包可能需要几秒钟,具体取决于您的应用和设备。

答案 1 :(得分:0)

事实上,还没有足够的方法。但是我们可以将mauron85标记为一种比android上其他版本更好的方法,但它在 IOS 上也无法完美运行。例如,如果应用已被用户杀死,则该作业将无法继续工作,或者无法对作业执行量进行任何控制,则每次设备更改位置时,该作业就会被触发。

其他组件(例如 react-native-background-fetch react-native-background-task )具有作业执行期限的限制(作业每15分钟重复一次并且无法缩短该时间段),它们只能在android上运行。

如果 Facebook本机响应对于此问题有一些切实可行的解决方案,那将是很好的。