81.一个apk的安装都经历了什么

/**
* 每天一个知识点day80 TODO 一个apk的安装都经历了什么
*
* https://blog.csdn.net/github_34402358/article/details/105954174
* 1.将apk文件复制到data/app下目录
* 1.1使用PackageManager的installPackage接口
* 1.2之后调用installPackageAsUser,主要做权限检查和构建InstallParams
* 2.解析apk信息
* 3.dexopt操作
* 4.更新权限信息
* 5.完成安装,发送Intent.ACTION_PACKAGE_ADDED的广播
*
* Bundle
* 1.activity状态数据的保存与恢复涉及到两个回调 onSaveInstanceState onCreate
* 2.fragment的setArguments
* 3.消息机制中message的setData
* 4....
* Bundle实现了Parcelable和Cloneable接口。
* final class不能被继承。
* 内部使用ArrayMap。Arraymap中使用的是两个数组进行存储,一个数组存储key,
* 这个和SparseArray差不多,只不过sparseArray的key值只能是int型的,
* 而ArrayMap可以是map型,所以在数据量不大的情况下可以使用这两个集合代替hashmap
* 去优化性能一个数组存储value,内部的增删改查都将会使用二分查找来进行
*
* 死锁
* 指多个进程在运行过程中因争夺资源而造成的一种僵局,
* 当进程处于这种僵持状态时,若无外力作用,它们都将无法再向前推进
* 如:此时有一个线程A,按照先锁a再获得锁b的的顺序获得锁,而在此同时又有另外一个线程B,
* 按照先锁b再锁a的顺序获得锁。
* 条件:两个以上线程和两种以上资源。
*
*

你可能感兴趣的:(81.一个apk的安装都经历了什么)