React本机后台服务崩溃应用程序



我使用后台服务,这样当应用程序被杀死或在后台时,一些任务将执行

import BackgroundJob from 'react-native-background-job';
const backgroundJob = {
jobKey: "myJob",
job: () => console.log("Running in background")
};
BackgroundJob.register(backgroundJob);
var backgroundSchedule = {
jobKey: "myJob",
period: 1000,
timeout: 1000,
exact: true
}
<TouchableOpacity
onPress={() => {
BackgroundJob.schedule(backgroundSchedule)
.then(() => console.log("Success"))
.catch(err => console.err(err));
}}
>
<Text>Schedule regular job</Text>
</TouchableOpacity>

我使用上面的代码服务启动,但问题是当任务必须执行时应用程序崩溃。我什么都不是执行在这个我只是打印控制台。所以任何人都可以为我提供干净的代码,让我可以在android react native中运行后台服务,每1分钟执行一次任务,而不会崩溃应用程序。

您可以尝试纯React Native方法:

任务是在AppRegistry上注册的异步函数,类似于注册React应用程序:

import { AppRegistry } from 'react-native';
AppRegistry.registerHeadlessTask('SomeTaskName', () => require('SomeTaskName'));

然后,在SomeTaskName.js:中

module.exports = async (taskData) => {
// do your background job here
};

你可以在任务中做任何事情,比如网络请求、定时器等等,只要它不接触UI。一旦任务完成(即承诺得到解决(,React Native将进入"暂停"模式(除非有其他任务正在运行,或者有前台应用程序(。

若你们需要通过按下TouchableOpacity来触发任务,你们可以做:

import { AppRegistry, TouchableOpacity } from 'react-native';
const Task = require('SomeTaskName');
<TouchableOpacity
onPress={() => {
AppRegistry.registerHeadlessTask('SomeTaskName', () => Task);
}
>
<Text>Schedule regular job</Text>
</TouchableOpacity>

发件人:https://reactnative.dev/docs/headless-js-android.html

最新更新