Android App 一个bug的解决经过

最近做一个项目,需要请求文件操作的权限 。功能做好了,自己手机上测试,没有问题 。发给别人,在别人的手机上问题就来了 。在别人手机上一点就崩溃了 。那个按钮上的事件是:先进行文件操作权限申请,有了权限就操作文件,然后做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的解决经过】


    推荐阅读