투케이2K

174. (TWOK/ERROR) [Android] WebView methods must be called on the same thread - 자바스크립트 브릿지 호출 에러 본문

투케이2K 에러관리

174. (TWOK/ERROR) [Android] WebView methods must be called on the same thread - 자바스크립트 브릿지 호출 에러

투케이2K 2023. 10. 2. 09:11

[환경 설정 및 설명]

프로그램 : AndroidStudio

설 명 : [Android] WebView methods must be called on the same thread - 자바스크립트 브릿지 호출 에러

W/WebView: java.lang.Throwable: A WebView method was called on thread 'JavaBridge'. All WebView methods must be called on the same thread. (Expected Looper Looper (main, tid 2) {8fb5a13} called on Looper (JavaBridge, tid 623) {9ff9505}, FYI main Looper is Looper (main, tid 2) {8fb5a13})
        at android.webkit.WebView.checkThread(WebView.java:2615)
        at android.webkit.WebView.loadUrl(WebView.java:747)        
        at android.os.MessageQueue.nativePollOnce(Native Method)
        at android.os.MessageQueue.next(MessageQueue.java:335)
        at android.os.Looper.loopOnce(Looper.java:186)
        at android.os.Looper.loop(Looper.java:313)
        at android.os.HandlerThread.run(HandlerThread.java:67)
 

[에러 원인]

1. 메인 스레드가 아닌 곳에서 Android To JavaScript 브릿지 통신 시 발생하는 이슈

 

[해결 방법]

1. Handler(Looper.getMainLooper()) 핸들러 내에서 자바스크립트 브릿지 통신 수행

2. 소스 코드 첨부 :

 

                new Handler(Looper.getMainLooper()).postDelayed(new Runnable() {
                    @Override
                    public void run() {


                        // [Android >> JavaScript 함수 호출]
                        loginWebView.loadUrl("javascript:setLogin('"+S_Preference.getString(getApplication(), S_FinalData.PRE_USER_LOGIN_ID)+"', '"+S_Preference.getString(getApplication(), S_FinalData.PRE_USER_LOGIN_PW)+"')");


                    }
                }, 0);

 

반응형
Comments