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

时间:2016-11-17 12:02:10

标签: java android ibm-mobilefirst android-service android-syncadapter

在我的应用程序中,我正在尝试在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没有收到任何内容。

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

1 个答案:

答案 0 :(得分:1)

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

此外,我不相信这种使用sendAction API甚至是正确的或可能的......