Javaプラグインは、アプリがバックグラウンドの間にデバイスのタイムゾーンが変更されると、TimezoneVariablesのブール値をtrue/falseに正常に更新します。ブール値を取得するためにアプリケーションが再開したら、私はプラグインを呼び出し、 "getIsTimezoneChanged is true"を出力しますが、 "timezone did change"は表示されません。Cordova exec success関数が呼び出されない(Android)
$ 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のプロキシ:あなたはネイティブ実装でコールバックを呼び出すことはありませんので、
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);