🍏

[Kotlin]onPagefinishが2回呼ばれる場合の制御

2022/05/02に公開

概要

以下のstackoverflowの内容と同じような現象が起きた。
https://stackoverflow.com/questions/18282892/android-webview-onpagefinished-called-twice
そこでどう制御するべきか自分なりに整理します。

onPagefinishが2回呼ばれる原因

現実的に考えられる原因としては以下の2つかと思います。

  1. Webページが実際に複数回ロード/リダイレクトされている
  2. shouldOverrideUrlLoadingでURLをオーバーライドしている

制御方法

上記どちらの原因だとしても、
最初に挙げたstackoverflow内の回答でもあるように、
基本何かフラグとなる変数を作って制御するしか無さそう。
ただ回答の中でgetProgressを使用してページの進行状況を取得し、
そこが100の場合ページの読み込みが完全に完了したという意味となるので、
その制御方法でも良いと思いました。
ただその場合2番の原因だと意図する挙動は難しいかと思います。

公式:getProgress
https://developer.android.com/reference/android/webkit/WebView#getProgress()

Discussion