마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

폰갭으로 만든 notification에 대한 질문입니다.

0 추천
안녕하세요. 오랜만에 글을 남깁니다.

폰갭으로 안드로이드 어플을 하나 구현했는데요.

예전에는 이런문제가 생기지 않았던거 같은데.. 한 반년전 phonegap버전을 2.2로 업그레이드 하면서

생긴거 같은데요.

HTML상에서 TR태그에 Onclick이벤트로 자바스크립트 함수를 호출하구요.

이 함수에서는 navigator.notification.confirm을 통해서 메세지를 물어보는데요.

문제는 한번 터치했을때 위의 confirm함수가 두번실행됩니다. 눈으로 봐도 두번뜨는게 보이는데요.

이상태에서 alert으로 찍어서 확인해보면 alert때문인지는 모르겠는데 한번밖에 나지 않구요..

어떤이유일까요? 답변 부탁드립니다.
서리 (140 포인트) 님이 2014년 2월 4일 질문

1개의 답변

0 추천
구글링해보니 다른 개발자들도 navigator.notification.confirm 함수가 여러 번 실행되는 문제를 겪는 것 같네요. 폰갭의 문제인지 다른 문제인지는 모르겠습니다.

 

중복실행을 막는 코드를 삽입하면 어떨까요? 한 번만 뜨게 말입니다.
방귀과장 (18,940 포인트) 님이 2014년 2월 4일 답변
아...그렇군요..저만 그런현상을 보는게 아니었군요..
어느시점에서 막아야할지..난감하군요..
조언좀 부탁드려요~
전역변수를 하나 만들고 confirm 함수의 콜백함수에서 전역변수를 체크하는 방식을 쓰면 안될까요?
음...안그래도 그건 해보았는데...콜백 들어오기전에
이미 두번을 타는것 같네요....하....
어느시점에 두번호출되는건지..원...ㅠㅠ
아직 답을 못찾았습니다.
flag 줘서 중복실행 막거나 카운터 세는 수 밖에 없습니다.

ex)
var logoutConfirmFlag = true;
    var logoutConfirm = function() {
    function logoutConfirmCallback(button) {
        if (button == 2) {
            logout();
        }
        logoutConfirmFlag = true;
    }
    if(logoutConfirmFlag) {
        logoutConfirmFlag = false;
        navigator.notification.confirm(
                '로그아웃 하시겠습니까?', // message
                logoutConfirmCallback, // callback to invoke with index of button pressed
                '로그아웃', // title
                '취소,확인' // buttonLabels
            );
    }
};
P.S
버그 느낌인듯한데, 이틀 고민하다가 다음부턴 flag 쓴답니다..
Confirm 호출 후 콜백함수에서 flag 초기화 처리했습니다.
2.9.0 버전 사용
저는 alert를 계속 notification_function에서 정의 할 수 없습니다 가 나오네요ㅜㅜ 분명히  notification_function을 만들었는데
...