アプリケーションの onModuleLoad() に次のコードがあります。
Window.addWindowClosingHandler(new ClosingHandler() {
@Override
public void onWindowClosing(ClosingEvent event) {
event.setMessage("If you choose to close, application will sign out");
}
});
//sign out on close
Window.addCloseHandler(new CloseHandler<Window>() {
@Override
public void onClose(CloseEvent<Window> event) {
sendLogout();
}
});
sendLogout() 関数は次のようになります。
// Set up the callback object.
AsyncCallback<String> callback = new LogoutCallback(this);
// Make the call to the survey service.
SurveySystemService.Util.getInstance().logout(details, callback);
「詳細」はオブジェクトです。
ウィンドウを閉じると問題なく動作しますが、ページを更新しようとするとログアウトしません。私が考えたのは、呼び出しが非同期であるため、モジュールが再起動される前にサーバーへのメッセージの送信が完了していないということです。
私は試しました: 1. onClose メソッド内でコールバックを作成して呼び出します。2.タイマーを使用して、呼び出しが行われたかどうかを確認します。3. 上記と同じようにチェックする無限ループ (私は絶望的になりました)。
これらすべてのソリューションで、プログラムはコールバックの作成に到達しますが、サーバーは何も受信しませんでした。
これについて何か助けはありますか?