【发布时间】:2018-01-31 05:48:37
【问题描述】:
如果应用在后台时设备的时区发生变化,Java 插件会成功将 TimezoneVariables 中的布尔值更新为 true/false。当应用程序恢复获取布尔值时,我调用我的插件,它会打印“getIsTimezoneChanged is true”,但不会打印“timezone did change”。
$log.debug javascript 函数可以正常工作,就像 console.log 一样。如果有人能告诉我为什么没有调用 exec successcallback,相关代码如下。
Java 代码:
@Override
public boolean execute(String action, JSONArray data, CallbackContext callbackContext) throws JSONException {
if(action.equals("createTimezoneChangeListener")) {
TimezoneVariables.setCallbackContext(callbackContext);
TimezoneVariables.setIsTimezoneChanged(false);
}else if(action.equals("checkTimezoneChange")){
if (TimezoneVariables.getIsTimezoneChanged()){
Log.d("TimezoneUpdater","getIsTimezoneChanged is true");
TimezoneVariables.setIsTimezoneChanged(false);
return true;
} else return false;
}
return true;
}
Javascript 代理:
function TimezoneUpdater()
{
}
TimezoneUpdater.prototype = {
checkTimezoneChange: function (changedCallback) {
cordova.exec(changedCallback, null, "TimezoneUpdater", "checkTimezoneChange", []);
}
}
module.exports = {
createTimezoneChangeListener: function(){
cordova.exec(null, null, "TimezoneUpdater", "createTimezoneChangeListener", []);
return new TimezoneUpdater();
}
};
www javascript 代码:
var ref = window.timezoneUpdater.createTimezoneChangeListener();
document.addEventListener("resume", function(){
ref.checkTimezoneChange(function(){
//Timezone did change while app was in the background
$log.debug("timezone did change");
});
}, false);
【问题讨论】:
标签: android cordova ionic-framework phonegap-plugins cordova-plugins