在Android 8.0上的React Native中运行headlessJS

时间:2018-09-13 09:12:28

标签: java android android-studio react-native react-native-android

我一直在开发一个使用前台服务来检测信标的信标检测应用程序。

该代码在android 7.0上完美运行,但由于某些原因在android 8.0上崩溃。我已经按照文档中的说明注册了headlessJS,它在android 7.0及更低版本上正常运行,但是在android 8.0上崩溃并出现错误。

HeadlessJsTaskConfig getTaskConfig(Intent intent) {
Bundle extras = intent.getExtras();
if (extras == null) {
    return null;
}

String event = extras.getString("eventName");
if (TextUtils.isEmpty(event)) {
  return null;
}

WritableMap map = new WritableNativeMap();
if (extras.containsKey("beacon")) {
  map = BeaconHelper.getObject((Beacon) extras.getParcelable("beacon"));
}

Log.d(TAG, event);
return new HeadlessJsTaskConfig(event, map,5000, true);
}

我相信JS中存在一些问题,我也尝试通过使用DeviceEventEmitter,NativeEventEmitter和App注册表注册事件。

AppRegistry.registerHeadlessTask('didEnterRegion', () => 
console.log('here'));
AppRegistry.registerComponent('didExitRegion', () => 
console.log('there'));
DeviceEventEmitter.addListener('didEnterRegion', (beacons) => 
console.log(beacons));
DeviceEventEmitter.addListener('didExitRegion', (beacons) => 
console.log(beacons));

我最终还是遇到了这个错误

enter image description here

0 个答案:

没有答案