最近做一个项目,需要请求文件操作的权限 。功能做好了,自己手机上测试,没有问题 。发给别人,在别人的手机上问题就来了 。在别人手机上一点就崩溃了 。那个按钮上的事件是:先进行文件操作权限申请,有了权限就操作文件,然后做UI处理 。
首先我怀疑的是权限申请的代码可能有什么不兼容,导致App崩溃 。我的权限申请代码是自己写的,我怀疑我自己写的有问题 。于是我换了一个比较流行的权限申请框架 。经测试后,还是不行 。
由于手机并不在我身边,我看不到日志 。于是我又加上了腾讯的bugly 。重新打了包,给别人测试 。然后发现了如下错误:
AndroidRuntime: FATAL EXCEPTION: DefaultDispatcher-worker-1
AndroidRuntime: JAVA.lang.IllegalStateException: Reading a state that was created after the snapshot was taken or in a snapshot that has not yet been applied
……
bugly还是很优秀的,还给了我好几个可能有用的解决方案 。然而细读一下,发现那些解决方案并不适合我遇到的情况 。
我有一点儿绝望了,开始求助于其他人了 。然而没有什么用 。
我又去看了一眼,bugly给我的解决建议 。在一堆中文和英文中,我发现了一个单词,thread 。嗯,线程 。我开始有些怀疑我代码中的线程处理了 。
再去看看代码吧,发现我在IO线程中操作文件,然后回调了一个方法,这个回调方法中操作了UI界面 。于是我在操作完文件后,手动切换回了主线程 。
再试试吧,发现问题解决了 。
【Android App 一个bug的解决经过】
推荐阅读
- 新生儿没有眉毛
- 新生儿吃母乳大便什么样?
- Windows下bat脚本修改网卡ip
- MyBatis 使用数组作为参数,这里藏着一个大坑
- 介绍一个谷歌的AI工具库MediaPipe
- 中秋节祝福语有哪些?
- 只需关闭一个设置,解除电脑网速和内存的限制,让电脑丝滑顺畅
- 手把手带你撸一个最简单实时数据库
- Android 13 虚拟化技术支持安装 Windows 和 Linux 操作系统
- 轻量、高效、功能强大的微前端框架-MicroApp