LoginSignup
1
0

More than 5 years have passed since last update.

FragmentでMapViewを使うとANRでフリーズした

Posted at

FragmentでMapViewを表示していたところonDestroyのタイミングでANRが発生しフリーズしてしまう問題でハマりました。
/data/anr/traces.txtには以下のログが記録されていました。

"main" prio=5 tid=1 Native
  | group="main" sCount=1 dsCount=0 obj=0x75de1f90 self=0x7f8ca96a00
  | sysTid=16689 nice=-10 cgrp=default sched=0/0 handle=0x7f90e67aa0
  | state=S schedstat=( 9184704295 1676607665 12039 ) utm=773 stm=144 core=6 HZ=100
  | stack=0x7ffb204000-0x7ffb206000 stackSize=8MB
  | held mutexes=
  kernel: __switch_to+0x88/0x94
  kernel: futex_wait_queue_me+0xd8/0x144
  kernel: futex_wait+0xec/0x200
  kernel: do_futex+0xdc/0x494
  kernel: SyS_futex+0x110/0x19c
  kernel: el0_svc_naked+0x24/0x28
  native: #00 pc 000000000001c22c  /system/lib64/libc.so (syscall+28)
  native: #01 pc 00000000000765a0  /system/lib64/libc.so (pthread_cond_wait+96)
  native: #02 pc 00000000004ad0e8  /data/app/jp.co.runners.runand.dev-2/lib/arm64/libmapbox-gl.so (???)
  native: #03 pc 00000000004ad9f8  /data/app/jp.co.runners.runand.dev-2/lib/arm64/libmapbox-gl.so (???)
  native: #04 pc 00000000000a11ec  /data/app/jp.co.runners.runand.dev-2/lib/arm64/libmapbox-gl.so (???)
  native: #05 pc 00000000002228a0  /data/app/jp.co.runners.runand.dev-2/lib/arm64/libmapbox-gl.so (???)
  native: #06 pc 0000000000222a04  /data/app/jp.co.runners.runand.dev-2/lib/arm64/libmapbox-gl.so (???)
  native: #07 pc 000000000008400c  /data/app/jp.co.runners.runand.dev-2/lib/arm64/libmapbox-gl.so (???)
  native: #08 pc 00000000000840b8  /data/app/jp.co.runners.runand.dev-2/lib/arm64/libmapbox-gl.so (???)
  native: #09 pc 000000000008d9f0  /data/app/jp.co.runners.runand.dev-2/lib/arm64/libmapbox-gl.so (???)
  native: #10 pc 000000000008da64  /data/app/jp.co.runners.runand.dev-2/lib/arm64/libmapbox-gl.so (???)
  native: #11 pc 0000000000150210  /data/app/jp.co.runners.runand.dev-2/oat/arm64/base.odex (Java_com_mapbox_mapboxsdk_maps_NativeMapView_nativeDestroy__+124)
  at com.mapbox.mapboxsdk.maps.NativeMapView.nativeDestroy(Native method)
  at com.mapbox.mapboxsdk.maps.NativeMapView.destroy(NativeMapView.java:124)
  at com.mapbox.mapboxsdk.maps.MapView.onDestroy(MapView.java:422)

解決方法

MapView#onDestroyFragment#onDestoryViewの中で呼ぶ。
誤ってFragment#onDestroyの中で呼び出していたのが、原因で今回の問題が発生したようです。
名前が同じだったので間違いやすいと思います。

参考

1
0
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
1
0