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 的方式是正确的或可能的...
在我的应用程序中,我试图在 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 的方式是正确的或可能的...