Javascript React Native:在后台使用AlarmManager从Java模块运行JS代码

Javascript React Native:在后台使用AlarmManager从Java模块运行JS代码,javascript,android,react-native,alarmmanager,native-module,Javascript,Android,React Native,Alarmmanager,Native Module,我正在寻找从Java本机模块执行JS代码的方法。我用定时器找到了解决方案,但它使用回调,并且只有在应用程序处于后台时才有效() 我正在使用AlarmManager唤醒Java的BroadcastReceiver,但从现在起,我不知道如何运行Javascript代码。这段代码不是React组件,但它使用了一些React sdk和模块(facebooksdk、googlesdk、Keychain和Asyncstorage) 我尝试在设备EventEmitter上创建侦听器(由于),并在广播接收器中运

我正在寻找从Java本机模块执行JS代码的方法。我用定时器找到了解决方案,但它使用回调,并且只有在应用程序处于后台时才有效()

我正在使用AlarmManager唤醒Java的BroadcastReceiver,但从现在起,我不知道如何运行Javascript代码。这段代码不是React组件,但它使用了一些React sdk和模块(facebooksdk、googlesdk、Keychain和Asyncstorage)

我尝试在设备EventEmitter上创建侦听器(由于),并在广播接收器中运行

public class Alarm extends BroadcastReceiver {

@Override
public void onReceive(Context context, Intent intent) {

    ReactApplicationContext contxt = (ReactApplicationContext) context;
    contxt.getJSModule(DeviceEventManagerModule.RCTDeviceEventEmitter.class)
    .emit("runTask", null);

}
但我已抛出运行时错误:

Caused by: java.lang.ClassCastException: android.app.ReceiverRestrictedContext cannot be cast to com.facebook.react.bridge.ReactApplicationContext

也许在后台不可能从Java模块运行JS,尤其是当应用程序关闭时。欢迎提供任何提示。

查看transistorsoft github帐户

具体而言:

我在这些方面取得了一些成功

然而,它们都有各自的缺点。到目前为止,我还没有找到一个在后台运行JS的包。RN团队应该在做这件事,但还没有

本例中的解决方案是用java编写在后台运行所需的代码。最终这就是我所做的