我可以使用Headless JS在类内调用函数吗? React-Native android

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

我找不到用于在Android的React-Native中实现Headless JS的任何适当文档。

目前,我已经实现了这些:

AndroidManifest.xml:

<service android:name="com.axcesscarlock.MyTaskService" />

MainApplication.java

import android.os.Bundle;
import android.content.Intent;
import com.facebook.react.HeadlessJsTaskService;

我创建了一个Java类:

package com.locationlistener.service;
import android.content.Intent;
import android.os.Bundle;
import com.facebook.react.HeadlessJsTaskService;
import com.facebook.react.bridge.Arguments;
import com.facebook.react.jstasks.HeadlessJsTaskConfig;
import javax.annotation.Nullable;

public class MyTaskService extends HeadlessJsTaskService {

  @Override
  protected @Nullable HeadlessJsTaskConfig getTaskConfig(Intent intent) {
    Bundle extras = intent.getExtras();
    if (extras != null) {
      return new HeadlessJsTaskConfig(
          "SomeTaskName",
          Arguments.fromBundle(extras),
          10000, // timeout for the task
          false // optional: defines whether or not  the task is allowed in foreground. Default is false
        );
    }
    return null;
  }
}

并且此代码在javascript文件中:

AppRegistry.registerHeadlessTask('SomeTaskName', () => require('SomeTaskName'));

module.exports = async (taskData) => {
    console.log('Hello from the background');
};

当用户将应用程序发送到后台时,我需要运行一个函数,但是该函数从状态关联(调用)其他函数和数据。因此,在这种情况下,我应该在后台调用整个类吗?当前正在使用发布的代码,出现此错误,提示“无法解析模块SomeTaskName”。

java android react-native background-process headless
1个回答
0
投票

确保someTaskName文件位于同一目录中。

和编辑

AppRegistry.registerHeadlessTask('SomeTaskName', () => require('./SomeTaskName'));

您能够使用无头js吗?我也尝试应用它,但是我的应用程序崩溃了。尽管我按照文档中的说明进行了所有操作]

© www.soinside.com 2019 - 2024. All rights reserved.