在Android和iOS中,在后台运行任务的方式各不相同.我在堆栈溢出上也找到了What is the best way to schedule task in android?个.
我想知道哪种方法最好只用react-native
个.对于每天或每隔几个小时运行的任务,使用setInterval
或setTimeout
是否足够好?
这些任务不会被操作系统杀死吗?
有什么 idea 或建议吗?
在Android和iOS中,在后台运行任务的方式各不相同.我在堆栈溢出上也找到了What is the best way to schedule task in android?个.
我想知道哪种方法最好只用react-native
个.对于每天或每隔几个小时运行的任务,使用setInterval
或setTimeout
是否足够好?
这些任务不会被操作系统杀死吗?
有什么 idea 或建议吗?
我会回答我自己的问题,看看这些信息是否能被任何人使用.
由于不同的移动操作系统往往会终止后台作业(job),或暂停它们以节省电池,因此在react native中几乎没有确定的方法来调度任务.我使用以下组合:
将计时器卸载到后台,该应用程序在前台和后台都可以使用(!如果使用create react native app,则必须将其弹出)
在安卓系统中使用iOS和HeadlessTask的后台获取,这里有一个不错的库https://github.com/jamesisaac/react-native-background-task
使用地理位置更新唤醒应用程序并启动线程https://github.com/mauron85/react-native-background-geolocation.
我想你可以使用蓝牙唤醒来遵循类似的策略.
从服务器推送通知,以确保应用程序确实唤醒了应用程序(除非它已被操作系统杀死).在iOS中,确保调用notification.finish()
以避免被任务处理程序算法区分.
对于Android,您可以try 使用AlarmManager API https://github.com/vikeri/react-native-background-job.
当心龙:如果你的应用程序在系统唤醒后滥用执行时间或内存使用,它可能会被关闭.在手机没有电池的情况下,你可能需要重新给所有的听者充水.因此,用户仍然需要与你的应用程序进行大量交互.
Update: