嗨,我收到 ANR(应用程序无响应)错误,但我不明白为什么。如果我单击“等待”,一切都会正常运行,并且 ANR 不会再回来了。
现在,我知道当使用 MediaPlayer 作为服务时,使用 .prepareAsync 和 onPrepared() 方法而不是简单的 .prepare() 和 .start() 是一种很好的做法。它不会锁定 UI 线程并且效果很好。
问题是我所有的 ANR 在打开文件时都没有发生(你会猜到那里有更高的处理器),而是在播放时随机发生并且 cpu 最多只有几个 %。正如我之前提到的,NOTHING 几乎没有响应,并且 UI 线程上几乎没有剩下什么。
唯一的线索是我第一次播放曲目时没有收到 ANR,但只有在更改曲目后才会收到 ANR。我认为 prepareAsync 线程正在发生冲突,我自己添加了一个锁。没变。
每次开始新曲目之前,我都会尝试释放媒体播放器。没变
我尝试在许多序列中重置、停止等。没变。
有没有人经历过同样的事情?
作为一种解决方法,有没有办法自动关闭 ANR?我知道这不是答案,但我找不到任何选择。我在一个有根的平板电脑上(我编译了 ROM),它仅供我自己使用 - 没有分发
谢谢