2016-09-09 18 views
1

我正在寻找一些方法来从Java本机模块执行JS代码。我发现与定时器解决方案,但它使用回调,它只适用于当应用程序在后台(React-native background process(android) handling?)。React Native:在后台使用AlarmManager从Java模块运行JS代码

我使用AlarmManager来唤醒Java的BroadcastReceiver,但我不知道从这一点开始,如何运行Javascript代码。此代码不是React组件,但它使用了一些反应sdk和模块(facebooksdk,googlesdk,Keychain,Asyncstorage)。

我试图在DeviceEventEmitter(由于https://facebook.github.io/react-native/docs/native-modules-android.html)创建监听器并在运行的BroadcastReceiver

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); 

} 

但我已经投运行时错误:

也许这不是可以在后台运行Java模块中的JS,特别是在关闭应用程序时。任何提示都欢迎。

回答

3

退房的transistorsoft GitHub的帐户

具体做法是:

我已经有一些成功的这些。

然而,它们都有其缺点。到目前为止,我还没有发现在后台真正运行JS的软件包。 RN团队应该正在开展工作,但还没有。

在这种情况下的解决方案将编码任何你需要在Java中的后台运行。最终,这就是我所做的。

+0

@jonzee是否解决了您的问题? –

相关问题