小木箱@Singapore

Results 63 comments of 小木箱@Singapore

当dispatchTouch()返回true,move、up手势能够被执行

![image](https://user-images.githubusercontent.com/17723631/99874613-6501e580-2c24-11eb-8a80-648e4fe80845.png) Lambda 是在 java 8 上引入的。如果单纯要实现 Lambda 的效果,技术方法其实有很多种。 最终使用 invokedynamic 主要有两点,一是更稳定的文件格式。 二是更灵活的转换策略,Lambda 的转换策略由运行期决定的。

如果在GONE和INVISIBLE两者都可以完成你的效果,那么你应该选择INVISIBLE。因为从源码中来看GONE需要重新的布局和通知上级View去刷新,有缓存还要清空缓存; 从视图变更开销的来说INVISIBLE要更加的划算一些,因为不需要重新刷新layout

|热修复框架 |解决方式| 优势 | 缺陷| | ----:| ----:| ----: | :---: | | QQ空间 |每个类中插入一个来自其他`dex`的`hack.class`,由此让所有类都无法满足`pre-verifed`条件| 不建议使用 | 侵入打包流程,无法新增public函数,臃肿,实现起来不优雅| | Tinker |合成全量`dex`文件,所有的类都在全量`dex`中解决,从而消除类重复冲突| 对dex内容的比较粒度过细,实现较为复杂,性能消耗严重,空间替换时间性价比不高 | 大大减少空间 | | QFix |获取虚拟机中的某些底层函数,提前解析所有补丁类| 使用简单 |...

### app耗电原因 应用在后台执行一系列占用cpu资源的服务,如:播放视频、需要获取 GPS 信息、推送,进程唤醒操作 ### 优化方案 - 减少因为代码问题长时间获取 `WakeLock`,`WiFi` 和蓝牙扫描,及时关闭GPS定位服务 - 多模块使用定位尽量使用一次定位结果 - 选择合适的 `Location Provider` - 网络请求方面,不允许无网络状况下的网络请求 - 尽早适配最新的 `Target API` ### 监测方案 - `Java Hook` ```java ProxyHook().proxyHook(context.getSystemService(Context.POWER_SERVICE),...

## 垃圾收集器和内存回收策阅 ### 引言 - 哪些内存需要回收? - 什么时候回收? - 如何回收? ### 一.引用存亡测试方式    可达性分析算法判断对象是否存活,判断对象是否`finalize()`,如果对象在执行`finalize()`比较缓慢或者进入死循环,会导致整个回收机制奔溃。 ### 二.java引用类型 #### 强引用    类似`Object obj = new Object()` 这类的强引用,只要强引用还在,垃圾收集器永远不会回收掉被引用的对象。 #### 弱引用    用来描述非必需对象,但是它的强度比软引用关联的对象只能生存到下一次收集发生之前。软引用用`SoftRefrence`来表示。 ####...

#### 一.分类   根据引用类型的强弱,我们可以把引用分为: 强引用,软引用,弱引用,虚引用 ##### A.强引用(Strong Refrence) ```java MicroKibaco github = new MicroKibaco() ```   声明变量和定义就会产生对象的强引用.只要对象有强引用指向,并且 `GC Roots` 可达,那么 Java 内存回收时,即时濒临内存耗尽也不会回收该对象。 ##### B.软引用(Soft Refrence)    引用力度弱于`强引用`,是非必需的场景,在即将`OOM`之前,垃圾回收机制会把这些软引用对象加入回收范围,以获得更大的内存空间,让程序更加健康的运行。 ##### C.弱引用(Weak Refrence)    `YGC`时候肯定会被回收,在强引用断开后,引用不会劫持对象,调用`WeakRefrence`.`get()`可能返回`null`,要注意空指针异常。...

Okhttp 是通过 CacheInterceptor 进行 Cache,它负责网络交互相关。它里面包含了一些复杂的 `CRUD`逻辑.我们只需要知道如何进行 http 参数配置 ,何时禁止网络,只使用缓存,什么时候忽略网络数据,他的核心还是通过 DiskLruCache 实现了缓存在磁盘中的 LRU 存储,然后通过 Cache-Control 进行更好的 https 协议的缓存的 `header`。

### invalidate 和 requestLayout 的区别? - invalidate 不会调用 viewGroup 的 invalidate 方法,但是会调用 viewGroup 的 draw 而调用子view 的 onDraw - requestLayout 参与 view 的测量和布局,即 onMeasure 和 onLayout ### scrollTo / scrollBy...