IBM 移动优先:sendActionToJS 在 Android 中无法使用后台服务

IBM mobile first: sendActionToJS not working with background service in Android

在我的应用程序中,我试图在 Android 中创建一个同步适配器服务,当应用程序被终止时,它将 运行 在后台运行。

该服务会调用WL.getInstance().sendActionToJS()将控件发送给js。

我正在使用:

WL.App.setKeepAliveInBackground(true);

使应用程序在后台保持活动状态的方法,使用此方法即使应用程序已被杀死,我也可以使用该实例进行 WL。

onSync.java:

    try {
        JSONObject data = new JSONObject();

        data.put("isConnected", true);

        data.put("connRes", "MOBILE");

        WL wl = WL.getInstance();

        if(wl!=null){

            L.e("WL is not null");

            wl.sendActionToJS("isConnected", data); 
        }
        else{
            L.e("WL is null");
        }


    } 

    catch (Exception e) {
        // TODO: handle exception
        e.printStackTrace();




    }

main.js:

WL.App.setKeepAliveInBackground(true, options);

WL.App.addActionReceiver("MIActionReceiverId", function actionReceiver(received){

    console.log('MIActionReceiverId  .  '+JSON.stringify(received));



    else if(received.action == 'isConnected') {
        //Connectivity manager
        console.log('isConnected.  ');

        var isConnected = received.data.isConnected;
        console.log('isConnected.  '+isConnected);

    }




    }

WL.getInstance().sendActionToJS() 方法什么都不做,既不抛出任何异常,也不在 main.js 中添加 addActionReceiver 没有收到任何东西。

当应用程序被杀死并且 运行nig 后台时会发生这种情况,其余时间一切正常。

如前面的问题所述,MobileFirst Android SDK 中没有对 Android 服务中的 运行 或其他方面的官方支持,因此 SDK 的某些方面您尝试在此上下文中使用的方法会起作用,而有些可能不会。

此外,我不认为这种使用 sendAction API 的方式是正确的或可能的...