admin管理员组

文章数量:1336632

I need implement Headless JS in my React Native Android Application, but I got following issue :

Here is My Code :

index.android.js :

import React, { Component } from 'react';
import {AppRegistry} from 'react-native';
import SomeTaskName from './SomeTaskName'
AppRegistry.registerComponent('SomeTaskName', () => SomeTaskName);

SomeTaskName.js

module.exports = async (taskData) => {
   alert('test');
}

MyTaskService.java

import android.content.Intent;
import android.os.Bundle;
import .facebook.react.HeadlessJsTaskService;
import .facebook.react.bridge.Arguments;
import .facebook.react.jstasks.HeadlessJsTaskConfig;
public class MyTaskService extends HeadlessJsTaskService {
   @Override
   protected HeadlessJsTaskConfig getTaskConfig(Intent intent) {
   Bundle extras = intent.getExtras();
     if (extras != null) {
        return new HeadlessJsTaskConfig(
          "MyTaskService",
          Arguments.fromBundle(extras),
         5000);
     }
     return null;
  }
}

and add service in AndroidManifest.xml

<service android:name=".MyTaskService" android:enabled="true" android:label="MyTaskService" />

Please , Anyone help to fix this issue.

I need implement Headless JS in my React Native Android Application, but I got following issue :

Here is My Code :

index.android.js :

import React, { Component } from 'react';
import {AppRegistry} from 'react-native';
import SomeTaskName from './SomeTaskName'
AppRegistry.registerComponent('SomeTaskName', () => SomeTaskName);

SomeTaskName.js

module.exports = async (taskData) => {
   alert('test');
}

MyTaskService.java

import android.content.Intent;
import android.os.Bundle;
import .facebook.react.HeadlessJsTaskService;
import .facebook.react.bridge.Arguments;
import .facebook.react.jstasks.HeadlessJsTaskConfig;
public class MyTaskService extends HeadlessJsTaskService {
   @Override
   protected HeadlessJsTaskConfig getTaskConfig(Intent intent) {
   Bundle extras = intent.getExtras();
     if (extras != null) {
        return new HeadlessJsTaskConfig(
          "MyTaskService",
          Arguments.fromBundle(extras),
         5000);
     }
     return null;
  }
}

and add service in AndroidManifest.xml

<service android:name=".MyTaskService" android:enabled="true" android:label="MyTaskService" />

Please , Anyone help to fix this issue.

Share Improve this question asked Mar 24, 2017 at 12:18 Saravana KumarSaravana Kumar 3,3967 gold badges28 silver badges44 bronze badges 2
  • Did this actually give out an alert? – Sarah cartenz Commented Jan 22, 2018 at 15:12
  • could you make it work? – user12396958 Commented Jan 22, 2020 at 10:58
Add a ment  | 

1 Answer 1

Reset to default 1

You have to register a headless task. So replace the following code:

AppRegistry.registerComponent('SomeTaskName', () => SomeTaskName);

with:

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

And you need to call the task from your service, so replace:

if (extras != null) {
    return new HeadlessJsTaskConfig(
      "MyTaskService",
      Arguments.fromBundle(extras),
     5000);
 }
 return null;

with:

// Following line just to be sure it does not silently fail
WritableMap data = extras != null ? Arguments.fromBundle(extras) : null;
return new HeadlessJsTaskConfig(
    "SomeTaskName", // Use the registered headless Task here
    data,
    5000);

本文标签: javascriptHow to implement Headless JS in react native android applicationStack Overflow