本文主要是介绍Android ObjectOutputStream Serializable引发的血案,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
遇到一个问题
安装后第二次进app,闪退
重现步骤
[前置条件]打包分支:dev_7.13手机:vivo NEX 8.1.0[步骤]安装三星app----同意用户协议进入书城---连续点击back退出app---再次进入三星阅读
[结果]出现闪退(必现)
[期望]能正常进入书城
附件
查看了日志,没有crash 相关的信息。那么我就相信,应该是自己程序里面的杀死了进程。
根据日志,果然是自己的程序里面杀死了进程。(因为再次进入三星阅读时候,杀死进程的log 还没有打印。)
这一步其实可以更加的确切点,就是把代码里面杀死进程的代码块删掉试下。
但是为什么只有全新安装程序的第二次启动呢?难道是什么耗时的操作在影响?
我决定打印从程序开始推出,到杀死进程这一块的执行时间。
发现,全新安装第一次推出,这个耗时非常长,大概1-2秒,但是第二次之后就会很短。
然后我就在这一段Debug.startMethodTrace();查看耗时情况。
竟然是一个ObjectOutputStream。 这个东西里面有一个list,是当前手机安装包的信息,写这个东西耗时太久了。导致进程没有杀死,然后再次点击桌面,启动app,还没启动,代码执行到杀死进程哪一行,让人感觉是崩溃了。为什么第二次第三次不耗时呢?因为写这些信息每天只会执行一次。
总结:千万不要用ObjectOutputStream 序列化大的数据,比如里面有集合等
没事不要用这个东西,尤其是android.
很多人以为这个不耗时,但是你的object 对象里面有一个map,map 里面有很多数据,你就知道多耗时了。1-3s.
这篇关于Android ObjectOutputStream Serializable引发的血案的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!