有没有人成功实现了反应原生的无头js?

时间:2017-02-01 13:48:24

标签: react-native

https://facebook.github.io/react-native/releases/next/docs/headless-js-android.html#headless-js

我似乎无法找到正确的方法

我正在运行React-native 0.40

1 个答案:

答案 0 :(得分:2)

我实现了HeadlessJsTaskService来执行一些反应本机代码。

对我来说,ReactExecutorService只是默默地失败了,因为我在调用startService(new Intent(this, MyTaskService.class));时没有提供任何额外内容。以下代码修复了:

@Override
@Nullable
protected HeadlessJsTaskConfig getTaskConfig(Intent intent) {
    Bundle extras = intent.getExtras();
    WritableMap data = extras != null ? Arguments.fromBundle(extras) : null;
    return new HeadlessJsTaskConfig(
            "FeatureExecutor",
            data,
            5000);
}

我还有一个现有的Application类,它没有实现ReactApplication。我必须添加一些代码才能使HeadlessJsTaskService工作:

private final ReactNativeHost reactNativeHost = new ReactNativeHost(this) {
    @Override
    public boolean getUseDeveloperSupport() {
        return BuildConfig.DEBUG;
    }

    @Override
    protected List<ReactPackage> getPackages() {
        return Arrays.<ReactPackage>asList(
                // Insert your packages, e.g.
                new MainReactPackage()
        );
    }
};

@Override
public ReactNativeHost getReactNativeHost() {
    return reactNativeHost;
}

您还必须将自定义服务添加到清单中。例如:

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

如果上述解决方案无效,请提供一些有关您的问题的其他信息。