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引发的血案的更多相关文章
- Android 获取闹钟引发的血案
想做一个锁屏的软件.锁屏后可以显示闹钟信息. 一开始的思路是通过android content provider获取 mActivityObject.getContentResolver().quer ...
- 一个无锁消息队列引发的血案(六)——RingQueue(中) 休眠的艺术 [续]
目录 (一)起因 (二)混合自旋锁 (三)q3.h 与 RingBuffer (四)RingQueue(上) 自旋锁 (五)RingQueue(中) 休眠的艺术 (六)RingQueue(中) 休眠的 ...
- 一个无锁消息队列引发的血案(五)——RingQueue(中) 休眠的艺术
目录 (一)起因 (二)混合自旋锁 (三)q3.h 与 RingBuffer (四)RingQueue(上) 自旋锁 (五)RingQueue(中) 休眠的艺术 (六)RingQueue(中) 休眠的 ...
- [WCF]缺少一行代码引发的血案
这是今天作项目支持的发现的一个关于WCF的问题,虽然最终我只是添加了一行代码就解决了这个问题,但是整个纠错过程是痛苦的,甚至最终发现这个问题都具有偶然性.具体来说,这是一个关于如何自动为服务接口(契约 ...
- dubbox微服务实例及引发的“血案”
Dubbo 是阿里巴巴公司开源的一个高性能优秀的服务框架,使得应用可通过高性能的 RPC 实现服务的输出和输入功能,可以和 Spring框架无缝集成. 主要核心部件: Remoting: 网络通信框架 ...
- Integer.parseInt 引发的血案
Integer.parseInt 处理一个空字符串, 结果出错了, 程序没有注意到,搞了很久, 引发了血案啊!! 最后,终于 观察到了, 最后的部分: Caused by: java.lang.NoC ...
- Replication的犄角旮旯(六)-- 一个DDL引发的血案(上)(如何近似估算DDL操作进度)
<Replication的犄角旮旯>系列导读 Replication的犄角旮旯(一)--变更订阅端表名的应用场景 Replication的犄角旮旯(二)--寻找订阅端丢失的记录 Repli ...
- Replication的犄角旮旯(七)-- 一个DDL引发的血案(下)(聊聊logreader的延迟)
<Replication的犄角旮旯>系列导读 Replication的犄角旮旯(一)--变更订阅端表名的应用场景 Replication的犄角旮旯(二)--寻找订阅端丢失的记录 Repli ...
- 转:一个Sqrt函数引发的血案
转自:http://www.cnblogs.com/pkuoliver/archive/2010/10/06/1844725.html 源码下载地址:http://diducoder.com/sotr ...
随机推荐
- UVa 1220 - Party at Hali-Bula(树形DP)
链接: https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem& ...
- BZOJ2005:[NOI2010]能量采集(莫比乌斯反演,欧拉函数)
Description 栋栋有一块长方形的地,他在地上种了一种能量植物,这种植物可以采集太阳光的能量.在这些植物采集能量后,栋栋再使用一个能量汇集机器把这些植物采集到的能量汇集到一起. 栋栋的植物种得 ...
- tp3.2中的 I () 方法
I('get.id'); // 相当于 $_GET['id']
- jquery基础介绍-转
学习目的:理解 Ajax 及其工作原理,构建网站的一种有效方法. Ajax 是 Asynchronous JavaScript and XML(以及 DHTML 等)的缩写. 下面是 Ajax 应用程 ...
- js 实现 文字打印效果
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- POJ 1328 Radar Installation(很新颖的贪心,区间贪心)
Radar Installation Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 106491 Accepted: 2 ...
- Entity Framework code first设置不在数据库中生成外键
你现在用的EF是什么版本?我用EF6,你可以重写SqlServerMigrationSqlGenerator的生成外键和更新外键的方法,把不需要的表都过滤掉不就ok了? public class Ex ...
- 大数据框架-YARN
YARN(Yet Another Resource Negotiator): 是一种新的 Hadoop 资源管理器 [ResourceManager:纯粹的调度器,基于应用程序对资源的需求进行调度的, ...
- Intermediate_JVM 20180306 : 运行时数据区域
Java比起C++一个很大的进步就在于Java不用再手动控制指针的delete与free,统一交由JVM管理,但也正因为如此,一旦出现内存溢出异常,不了解JVM,那么排查问题将会变成一项艰难的工作. ...
- MySQL学习【SQL语句上】
1.连接服务端命令 1.mysql -uroot -p123 -h127.0.0.1 2.mysql -uroot -p123 -S /tmp/mysql.sock 3.mysql -uroot -p ...