react-native-background-job——让你的react-native项目实现后台运行

本文主要是介绍react-native-background-job——让你的react-native项目实现后台运行,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

使应用处于后台时运行JavaScript的后台任务。

即使应用程序已关闭,任务也会运行,默认情况下,也会在重新启动后继续存在。

这个库依赖于React Native的HeadlessJS ,目前只支持Android。

在本机端,它使用Firebase JobDispatcherAlarmManager

  • Firebase JobDispatcher(默认值):无法准确计划任务,并且根据Android API版本允许不同的period段。 FirebaseJobDispatcher是最节省电池效率的后向兼容调度后台任务的方式。

  • AlarmManager通过将exact设置为true :简单的propriatery实现,仅在测试时使用。 它只关心按时执行,所有其他参数都被忽略 - 重启时不会保留任务。

要求

RN 0.36+
Android API 16+ 

支持的平台

仅Android

安装


  • 下载
$ yarn add react-native-background-job
or
$ npm install react-native-background-job --save
  • 自动安装
$ react-native link react-native-background-job
  • 手动安装
  1. 打开android/app/src/main/java/[...]/MainActivity.java
    添加import com.pilloxa.backgroundjob.BackgroundJobPackage;到文件顶部的导入
    new BackgroundJobPackage()添加到MainApplication.javagetPackages()方法返回的列表中

  2. 将以下行追加到android/settings.gradle

          include ':react-native-background-job' project(':react-native-background-job').projectDir = new  File(rootProject.projectDir, '../node_modules/react-native-background-job/android') 
    
  3. 在android/app/build.gradle的依赖项块中插入以下行,并将minSdkVersion置为21:

      compile project(':react-native-background-job') 

用法


每次React Native启动时都必须注册任务,这是使用register函数完成的。 由于HeadlessJS不安装任何组件,因此register函数必须在任何类定义之外运行。

注册任务并不意味着任务已被调度,它只是通知React Native该job函数应该绑定到此jobKey。 然后使用schedule功能安排任务。 默认情况下,当应用程序位于前台时,任务不会触发 。 这是因为任务是在唯一的JavaScript线程上运行的,如果在app处于前台时运行任务,它将冻结应用程序。 通过将allowExecutionInForeground设置为true可以允许此行为。 建议不要使用它,但快速工作应该没问题。

API


register

注册任务和应该运行的功能。

必须在React Native的每次初始化时运行,并且必须在全局范围内运行,而不是在任何组件生命周期方法中运行。 仅注册任务不会安排任务。 必须按schedule才能开始运行。

参数

obj 对象obj.jobKey string任务的唯一键obj.job 函数将运行的JS函数 

例子

import BackgroundJob from 'react-native-background-job';const backgroundJob = {jobKey: "myJob",job: () => console.log("Running in background")
};BackgroundJob.register(backgroundJob);

schedule

安排一份新工作。

这只需要运行一次,而在每次初始化React Native时都必须运行register 。

参数

obj 对象obj.jobKey string用于注册的任务的唯一键,用于在后续阶段取消。obj.timeout number无论任务是否已完成,都应终止React实例的时间(以毫秒为单位)。 (可选,默认2000 )obj.period number运行任务的频率(以ms为单位)。 这个数字不准确,Android可能会修改它以节省电池。 注意:对于Android> N,最小值为900 0000(15分钟)。 (可选,默认900000 )obj.persist boolean如果任务应该在设备重启时保持obj.persist 。 (可选,默认为true )obj.override boolean此任务是否应使用相同的键替换预先存在的任务。 (可选,默认为true )obj.networkType number仅针对特定网络要求运行。 (可选,默认NETWORK_TYPE_NONE )obj.requiresCharging boolean仅在设备正在充电时运行任务(未被Android N设备预备) docs (可选,默认为false )obj.requiresDeviceIdle boolean仅在设备空闲时运行任务(未被Android N设备预备) docs (可选,默认为false )obj.exact boolean安排在提供的时间段内准确触发的任务。 请注意,这不是节能的做事方式。 (可选,默认为false )obj.allowWhileIdle boolean允许预定任务在打盹模式下执行。 (可选,默认为false )obj.allowExecutionInForeground boolean即使应用程序位于前台,也允许执行预定任务。 仅用于短期任务。 (可选,默认为false ) 

例子

import BackgroundJob from 'react-native-background-job';const backgroundJob = {jobKey: "myJob",job: () => console.log("Running in background")
};BackgroundJob.register(backgroundJob);var backgroundSchedule = {jobKey: "myJob",
}BackgroundJob.schedule(backgroundSchedule);

cancel

取消特定的工作

参数

obj 对象obj.jobKey string作业的唯一键 

例子

 import BackgroundJob from 'react-native-background-job';BackgroundJob.cancel({jobKey: 'myJob'});

cancelAll

取消所有预定作业

例子

import BackgroundJob from 'react-native-background-job';BackgroundJob.setGlobalWarnings(false);

setGlobalWarnings

设置全局警告级别

参数

warn 布尔 

例子

  import BackgroundJob from 'react-native-background-job'; BackgroundJob.setGlobalWarnings(false); 

isAppIgnoringBatteryOptimization

检查应用程序是否使用Doze优化电池,返回布尔值。

参数

callback从Android模块收到结果后,使用相应的参数callback 回调 。 

例子

import BackgroundJob from 'react-native-background-job'; 
BackgroundJob.isAppIgnoringBatteryOptimisation((error,ignoringOptimization)=>{});

参考链接

这篇关于react-native-background-job——让你的react-native项目实现后台运行的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1021621

相关文章

python使用watchdog实现文件资源监控

《python使用watchdog实现文件资源监控》watchdog支持跨平台文件资源监控,可以检测指定文件夹下文件及文件夹变动,下面我们来看看Python如何使用watchdog实现文件资源监控吧... python文件监控库watchdogs简介随着Python在各种应用领域中的广泛使用,其生态环境也

el-select下拉选择缓存的实现

《el-select下拉选择缓存的实现》本文主要介绍了在使用el-select实现下拉选择缓存时遇到的问题及解决方案,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的... 目录项目场景:问题描述解决方案:项目场景:从左侧列表中选取字段填入右侧下拉多选框,用户可以对右侧

springboot整合 xxl-job及使用步骤

《springboot整合xxl-job及使用步骤》XXL-JOB是一个分布式任务调度平台,用于解决分布式系统中的任务调度和管理问题,文章详细介绍了XXL-JOB的架构,包括调度中心、执行器和Web... 目录一、xxl-job是什么二、使用步骤1. 下载并运行管理端代码2. 访问管理页面,确认是否启动成功

Python pyinstaller实现图形化打包工具

《Pythonpyinstaller实现图形化打包工具》:本文主要介绍一个使用PythonPYQT5制作的关于pyinstaller打包工具,代替传统的cmd黑窗口模式打包页面,实现更快捷方便的... 目录1.简介2.运行效果3.相关源码1.简介一个使用python PYQT5制作的关于pyinstall

使用Python实现大文件切片上传及断点续传的方法

《使用Python实现大文件切片上传及断点续传的方法》本文介绍了使用Python实现大文件切片上传及断点续传的方法,包括功能模块划分(获取上传文件接口状态、临时文件夹状态信息、切片上传、切片合并)、整... 目录概要整体架构流程技术细节获取上传文件状态接口获取临时文件夹状态信息接口切片上传功能文件合并功能小

python实现自动登录12306自动抢票功能

《python实现自动登录12306自动抢票功能》随着互联网技术的发展,越来越多的人选择通过网络平台购票,特别是在中国,12306作为官方火车票预订平台,承担了巨大的访问量,对于热门线路或者节假日出行... 目录一、遇到的问题?二、改进三、进阶–展望总结一、遇到的问题?1.url-正确的表头:就是首先ur

C#实现文件读写到SQLite数据库

《C#实现文件读写到SQLite数据库》这篇文章主要为大家详细介绍了使用C#将文件读写到SQLite数据库的几种方法,文中的示例代码讲解详细,感兴趣的小伙伴可以参考一下... 目录1. 使用 BLOB 存储文件2. 存储文件路径3. 分块存储文件《文件读写到SQLite数据库China编程的方法》博客中,介绍了文

Redis主从复制实现原理分析

《Redis主从复制实现原理分析》Redis主从复制通过Sync和CommandPropagate阶段实现数据同步,2.8版本后引入Psync指令,根据复制偏移量进行全量或部分同步,优化了数据传输效率... 目录Redis主DodMIK从复制实现原理实现原理Psync: 2.8版本后总结Redis主从复制实

javafx 如何将项目打包为 Windows 的可执行文件exe

《javafx如何将项目打包为Windows的可执行文件exe》文章介绍了三种将JavaFX项目打包为.exe文件的方法:方法1使用jpackage(适用于JDK14及以上版本),方法2使用La... 目录方法 1:使用 jpackage(适用于 JDK 14 及更高版本)方法 2:使用 Launch4j(

JAVA利用顺序表实现“杨辉三角”的思路及代码示例

《JAVA利用顺序表实现“杨辉三角”的思路及代码示例》杨辉三角形是中国古代数学的杰出研究成果之一,是我国北宋数学家贾宪于1050年首先发现并使用的,:本文主要介绍JAVA利用顺序表实现杨辉三角的思... 目录一:“杨辉三角”题目链接二:题解代码:三:题解思路:总结一:“杨辉三角”题目链接题目链接:点击这里