如何使用 Kotlin 在 React Native andriod 中实现 Headlessjs

问题描述 投票:0回答:1

我想使用 Kotlin 在我的

Headless.js
Android 应用程序中实现
React Native
。并希望每 1 分钟运行一次任务。

这是我的代码

App.js

  import {AppRegistry} from 'react-native';
import App from './App';
import HeadlessTask from './HeadlessTask';
import {name as appName} from './app.json';

AppRegistry.registerComponent(appName, () => App);
AppRegistry.registerHeadlessTask('SomeTaskName', () => HeadlessTask);




 MyTaskService.kt
    package com.limcee;

import android.content.Intent
import com.facebook.react.HeadlessJsTaskService
import com.facebook.react.bridge.Arguments
import com.facebook.react.jstasks.HeadlessJsTaskConfig

class MyTaskService : HeadlessJsTaskService() {
    override fun getTaskConfig(intent: Intent): HeadlessJsTaskConfig? {
        return intent.extras?.let {
            HeadlessJsTaskConfig(
                "SomeTaskName",
                Arguments.fromBundle(it),
                5000, // timeout for the task
                true // optional: defines whether or not the task is allowed in foreground.
                // Default is false
            )
        }
    }
}


AndroidManifest.xml   limcee is my package name
 <service android:name="com.limcee.MyTaskService" android:enabled="true" android:label="MyTaskService" />

我已按照这些步骤操作,但在让后台任务 (SomeTaskName) 按指定时间间隔运行时遇到问题。目前,它根本不起作用。

如何使用 React Native 中的 Kotlin 确保我的 Headless.js 任务在 Android 后台每分钟运行一次?我的设置中是否需要任何额外的配置或调整

android react-native kotlin
1个回答
0
投票

MyTaskService.kt

class MyTaskService : HeadlessJsTaskService() {

    override fun getTaskConfig(intent: Intent): HeadlessJsTaskConfig? {
        return HeadlessJsTaskConfig(
            "SomeTaskName",
            Arguments.createMap(),
            60000, 
            true 
        )
    }
}

App.js

import { AppRegistry } from 'react-native';
import App from './App';
import HeadlessTask from './HeadlessTask';
import { name as appName } from './app.json';

AppRegistry.registerComponent(appName, () => App);
AppRegistry.registerHeadlessTask('SomeTaskName', () => HeadlessTask);

AndroidManifest.xml

<service android:name=".MyTaskService" android:enabled="true" android:exported="true" />
© www.soinside.com 2019 - 2024. All rights reserved.