DanmakuFlameMaster icon indicating copy to clipboard operation
DanmakuFlameMaster copied to clipboard

mDanmakuView.release()引发ANR问题

Open Fisherman91 opened this issue 8 years ago • 8 comments

请教调用mDanmakuView.release()引发的ANR问题,哪个版本解决的啊,还是说没解决?

Fisherman91 avatar Mar 10 '16 09:03 Fisherman91

0.4.0或0.4.1已解决

ctiao avatar Mar 10 '16 09:03 ctiao

private void stopDraw() { unlockCanvasAndPost(); if (handler != null) { handler.quit(); handler = null; } if (mHandlerThread != null) { HandlerThread handlerThread = this.mHandlerThread; mHandlerThread = null; try { handlerThread.join(); } catch (InterruptedException e) { e.printStackTrace(); } handlerThread.quit(); } }

是通过这两行代码: HandlerThread handlerThread = this.mHandlerThread; mHandlerThread = null; 解决的吗? 模拟了一下场景,还是会出现ANR。能解释一下为什么要调用handlerThread.join()吗

Fisherman91 avatar Mar 11 '16 03:03 Fisherman91

调join是确保线程正常退出,如果不join等待,在程序退出时线程没有正常退出的话,无用线程会在后台持续存在,导致资源占用,相比之下选择ANR报错更容易发现和提示问题。

ctiao avatar Mar 14 '16 02:03 ctiao

可是,我还是没明白你是怎么修复ANR的,请指出。

Fisherman91 avatar Mar 17 '16 07:03 Fisherman91

因为HandlerThread - run()属于SDK了,出现ANR以后,我并没有办法去修改

Fisherman91 avatar Mar 17 '16 07:03 Fisherman91

0.9.25 能重现。

aheadlcx avatar Jul 17 '18 06:07 aheadlcx

调用release会产生anr

gaoqianZ avatar Apr 18 '19 07:04 gaoqianZ

0.4.0或0.4.1已解决

0.9.25 会复现,现有复现机型如下:

  • VIVO V1818CA | Android 8.1.0,level 27
  • 荣耀 YAL AL00 | Android 10,level 29
  • 小米 MI 9 | Android 10,level 29
  • 魅族 PRO 5 | Android 7.0,level 24
  • 金立 S10CL | Android 7.1.1,level 25

日志如下:

Input dispatching timed out

ANR Input dispatching timed out (Waiting to send key event because the focused window has not finished processing all of the input events that were previously delivered to it. Outbound queue length: 0. Wait queue length: 7.)

java.lang.Object.wait(Native Method)

2 java.lang.Object.wait(Object.java:407) 3 java.lang.Thread.join(Thread.java:1290) 4 java.lang.Thread.join(Thread.java:1366) 5 master.flame.danmaku.ui.widget.DanmakuView.k(DanmakuView.java:9) 6 master.flame.danmaku.ui.widget.DanmakuView.j(DanmakuView.java:1) 7 master.flame.danmaku.ui.widget.DanmakuView.release(DanmakuView.java:1)

zhangnin avatar Jan 13 '20 13:01 zhangnin