我一直在开发一个使用前台服务来检测信标的信标检测应用程序。
该代码在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));
我最终还是遇到了这个错误