HashMap是一种常用的哈希表实现,它将键(key)映射到值(value)上。
HashMap实际上是一个“链表散列”的数据结构,即数组和链表的结合体。它的实现结合了数组和链表的特点,以实现高效的存储和查找操作。
工厂模式: 当需要一系列相关或相互依赖的对象时,定义工厂类,根据传入参数返回对应的实例。
单例模式: 确保一个类只有一个实例,提供一个全局访问点使用。如应用的全局状态或配置。
观察者模式:当一个对象的状态改变需要通知其他对象,使用观察者模式。如android中的点击事件
建造者模式:当一个类有很多构造参数或构造过程复杂时,会使用建造者模式。
适配器模式:需要将一个类的接口转换为客户端期望的另一个接口时。
内存泄露通常发生在对象不需要使用,其占用的内存未能被垃圾回收器回收。
常见场景: 静态变量持有Activity或Context的引用,当Activity被销毁,有个单例持有他的引用,无法被垃圾回收,导致内存泄漏注册监听器或回调未注销
使用匿名内部类或非非静态内部类,
使用handler忘记在onDestory中移除Runnable
Bitmap未正确回收为避免这些内存泄漏问题,需仔细管理内存,确保不在需要对象时及时释放他们。
如 onDestory 中注销监听器,移除回调。回收bitmap。
使用静态内部类或者弱引用来避免不必要的引用。
AMS进行初始化的时机很明确,就是在SystemServer进程开启的时候,就会初始化ActivityManagerService, 可以在SystemServer类中找到相关的启动代码。 应用启动时,Launcher进程请求AMS,AMS发送创建应用进程请求,Zygote进程接受请求并fork应用进程。而AMS发送创建应用进程请求调用的是 ZygoteState.connect() 方法,ZygoteState 是 ZygoteProcess 的内部类。