实现原理

悬浮窗实现原理

6.0以下直接获取权限,6.0及以上申请悬浮窗权限,然后通过WindowManager提供的方法进行视图的操作,手势操作部分,注意区分touch和click事件

ARouter原理

参考链接

插件化原理及思考

参考链接

Proguard技巧及原理

参考链接

LeakCanary原理

参考链接

LeakCanary使用ObjectWatcher来监控Android的生命周期。当Activity和Fragment被destroy以后,这些引用被传给ObjectWatcher以WeakReference的形式引用着,如果gc完5秒钟以后这些引用还没有被清除掉,那就是内存泄漏了。

强引用:垃圾回收器绝不会回收它,当内存空间不足,Java虚拟机宁愿抛出OOM

软引用:只有在内存不足的时候JVM才会回收仅有软引用指向的对象所占的空间

弱引用:当JVM进行垃圾回收时,无论内存是否充足,都会回收仅被弱引用关联的对象。

虚引用:和没有任何引用一样,在任何时候都可能被垃圾回收。

一个对象在被gc的时候,如果发现还有软引用(或弱引用,或虚引用)指向它,就会在回收对象之前,把这个引用加入到与之关联的引用队列(ReferenceQueue)中去。如果一个软引用(或弱引用,或虚引用)对象本身在引用队列中,就说明该引用对象所指向的对象被回收了。

当软引用(或弱引用,或虚引用)对象所指向的对象被回收了,那么这个引用对象本身就没有价值了,如果程序中存在大量的这类对象(注意,我们创建的软引用、弱引用、虚引用对象本身是个强引用,不会自动被gc回收),就会浪费内存。因此我们这就可以手动回收位于引用队列中的引用对象本身。

Author

jiangyao

Posted on

2021-06-12

Updated on

2023-05-31

Licensed under