jsd*_*rio 22 react-native react-native-android
在Android和iOS中分别在后台运行任务有不同的方法.我发现在android中安排任务的最佳方法是什么?以及堆栈溢出.
我想知道哪种是最好的方式react-native.使用setInterval或setTimeout必须每天或每隔几小时运行的任务是否足够好?
这些任务不会被操作系统杀死吗?
任何想法或建议?
jsd*_*rio 26
我将回答我自己的问题,看看这些信息是否可以被任何寻找它的人使用.
由于不同的移动操作系统倾向于杀死后台作业,或者使它们停止以节省电池,因此很少有确定性的方法可以在本机中调度任务.我使用以下组合:
将计时器卸载到后台,可在前台和后台使用该应用程序https://github.com/ocetnik/react-native-background-timer
在Android中使用iOS和HeadlessTask的后台获取,这是一个不错的库https://github.com/jamesisaac/react-native-background-task
使用地理位置更新来唤醒应用程序并启动线程https://github.com/mauron85/react-native-background-geolocation.
我想你可以使用蓝牙唤醒来遵循类似的策略.
从服务器推送通知以确定应用程序唤醒应用程序(除了它已被操作系统杀死).在iOS中,请确保调用notification.finish()以避免被任务处理程序算法区分.
对于Android,您可以尝试使用AlarmManager API https://github.com/vikeri/react-native-background-job.
小心龙:如果在系统唤醒后滥用执行时间或内存使用量,您的应用可能会被关闭.手机没有电池后,您可能需要为所有听众补充水分.因此,用户仍需要与您的应用进行大量互动.
更新:从Android O开始,有非常严格的后台执行限制.使用HeadlessJSTask服务时,如果您希望它持续时间超过几秒,请确保将其作为前台服务启动.它可能需要通知它.考虑到只加载捆绑包可能需要几秒钟,具体取决于您的应用和设备.
| 归档时间: |
|
| 查看次数: |
12864 次 |
| 最近记录: |