LoginSignup
3
1

More than 5 years have passed since last update.

Android OS4.4.2でWebViewを使っている画面でクラッシュする原因

Posted at

現象

4.4.2限定で、WebViewを使っている画面でクラッシュする時がある。

java.lang.NullPointerException
 at XXXX.MainActivity$9.onPageFinished(MainActivity.java:100)
 at com.android.webview.chromium.WebViewContentsClientAdapter.onPageFinished(WebViewContentsClientAdapter.java:449)
 at com.android.org.chromium.android_webview.AwContentsClient$AwWebContentsObserver$1.run(AwContentsClient.java:73)
 at android.os.Handler.handleCallback(Handler.java:733)
 at android.os.Handler.dispatchMessage(Handler.java:95)
 at android.os.Looper.loop(Looper.java:136)
 at android.app.ActivityThread.main(ActivityThread.java:5017)
 at java.lang.reflect.Method.invokeNative(Native Method)
 at java.lang.reflect.Method.invoke(Method.java:515)
 at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779)
 at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595)
 at dalvik.system.NativeStart.main(Native Method)

原因

条件

  • OS:4.4.2(WebViewのバージョンが関係している?)
  • onPageFinished内でWebViewを参照している
  • WebViewがある画面に遷移後、WebViewの処理が終わる前に再び画面遷移する(アクティビティを保持しない設定中だとやりやすい)

どこが悪さしている

素早く画面遷移したことで、ActivityのonPageFinishが走るころにはWebViewが無いことが原因

解決法

ActivityのonDestory()時にmyWebView.setWebViewClient(null)する

まとめ

  • ほぼ4.4.2だけに現れるクラッシュ
  • WebViewClientにnullを入れれば防げる

リンク

3
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
1