[Android] 웹뷰 히스토리 스택 얻는 방법

2021. 3. 23. 10:47·안드로이드

웹뷰 히스토리 스택 얻는 방법

 

 

 웹뷰앱 개발중 Back 키를 눌러도 이전 페이지로 넘어가지 않고

계속 같은 페이지만 불러오는 현상이 발생하였는데,

원인을 몰라 일주일정도를 고민했던 경험이 있었습니다.

 

 PC 웹 페이지 에서 테스트를 하면 문제가 없었으므로,

웹뷰단의 문제라고 생각했고 이러한 생각이 원인을 찾기 더욱 힘들게 했었는데요,

일주일이 넘는 고민 끝에 웹뷰의 백스택이 어떻게 쌓이는지 보았고 원인을 찾게되었습니다.

 

 원인은 웹뷰로 로드되는 URL이 "https://www.~" 형식으로 들어오면 웹뷰가 다시 "https://m.~" 형식의 URL로

리다이렉트 시키고 있었고 그렇기때문에 Back 키를 누르면 다시 "https://www.~" 페이지로 돌아가고 이 페이지는

다시 "https://m.~"페이지로 리다이렉트 시키는 무한루프가 발생했던 것 입니다.

 

 그래서 웹개발자분께 앱에서 페이지를 요청할 시 처음부터 "https://m.~"의 URL로 달라고 요청해서 해결했었습니다.

아래는 제가 사용한 테스트 코드입니다.

JAVA

    // 웹뷰 히스토리 스택 로그 찍기.
    void getBackForwardList(WebView webView) {
        WebBackForwardList currentList = webView.copyBackForwardList();
        int currentSize = currentList.getSize();
        for (int i = 0; i < currentSize; ++i) {
            WebHistoryItem item = currentList.getItemAtIndex(i);
            String url = item.getUrl();
            Log.d(TAG, "The URL at index: " + i + " is " + url);
        }
    }

 

테스트 소스

 

 

Kotlin

	// 웹뷰 히스토리 스택 로그 찍기.
        fun getBackForwardList(webView: WebView) {
            val currentList = webView.copyBackForwardList()
            val currentSize = currentList.size

            for (i in 0 until currentSize) {
                val item = currentList.getItemAtIndex(i)
                val url = item.url
                Log.d(TAG, "The URL at index: $i is $url")
            }
        }

 

테스트소스

(자바와 코틀린의 메소드 선언 위치차이가 있는데 inner class와 nested class의 차이점 입니다)

'안드로이드' 카테고리의 다른 글

[Android] Toast 메시지 중첩 호출 방지하기  (0) 2021.04.05
[Android] 안드로이드 고유 식별자 (unique identifiers)  (0) 2021.03.24
[Android] Release 모드로 빌드하기  (0) 2021.03.22
[Android] 중복 클릭 방지 하기  (0) 2021.03.22
[Android] 데이터 바인딩 적용법 변경사항  (0) 2021.03.10
'안드로이드' 카테고리의 다른 글
  • [Android] Toast 메시지 중첩 호출 방지하기
  • [Android] 안드로이드 고유 식별자 (unique identifiers)
  • [Android] Release 모드로 빌드하기
  • [Android] 중복 클릭 방지 하기
Been
Been
  • Been
    Been
    Been
  • 전체
    오늘
    어제
    • 분류 전체보기 (60)
      • 언어 (0)
        • Kotlin (0)
      • 안드로이드 (17)
      • iOS (3)
      • Git (1)
      • 스터디 (39)
        • 알고리즘 문제 풀이 (1)
        • 99클럽 코테 스터디 TIL (38)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    Android
    IOS
    RecyclerView
    코딩테스트준비
    언더라인 제거
    개발자취업
    항해99
    FragmentStateAdapter
    maxWidth
    TIL
    nsl
    쓰기권한
    WRITE EXTERNAL
    풀이실패
    리싸이클러뷰
    밑줄제거
    안드로이드
    자바
    debugRuntimeClasspath
    EditText
    Androiod
    객체변환
    아이폰
    NSR
    깃
    java
    99클럽
    AndroidID
    Git
    Coroutines
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.0
Been
[Android] 웹뷰 히스토리 스택 얻는 방법
상단으로

티스토리툴바