Jetpack之二:Databinding和Navigation的使用
DataBinding/ViewBinding和Navigation的源码分析在我看来价值不大,这里只是做一些使用的说明。
DataBinding/ViewBinding1.什么是DataBinding,什么是ViewBinding?两者有什么区别还记得被findViewById支配的恐惧吗 在还在用 java的时候 每次编写Activity的时候都需要用大量代码量去findViewById 到后来出现了黄油刀Butterknife 但是依旧需要去声明变量;然后到了kotlin第一次接触kotlin-android-extensions插件 卧槽这玩意也太香了吧 然而用着用着 这玩意就被弃用了,之后黄油刀Butterknife也被废弃了。之后就被viewbinding替代了,然后由于viewbing引入会拖垮编译速度,之后又加入了databinding。
ViewBinding 相当于是 DataBinding 的阉割版 只是做到了能够快速简单的获得布局中的View 也就是视图绑定; 而 DataBinding 可以做到数据绑定 也就是view和数据的双向绑定,但 ...
Jetpack之一:Lifecycle
在介绍Lifecycle之前我们先了解一下Jetpack。
Android已经发展了15年,可以说是比较成熟的技术了,一开始时框架很少,也没有什么规范,所有的代码都是要自己写,比如网络请求,数据库请求,数据解析等等。后来出现了一些框架来帮助开发者快速进行开发,比如XUtils、Volley、OKHttp、EventBus等,随着框架越来越多,一个应用可以有多种技术选型,直接导致应用开发越来越不规范,导致做出来的应用质量参差不齐,这显然不是谷歌想看到的。谷歌随后推出了MVP和MVVM相关的官方例子,效果很一般,而且覆盖只是在架构上,Goole I/O 2018大会上推出的Android Jetpack有望解决以上的问题。
在此之前,相信大家都已经学过Kotlin了,本节课也全采用Kotlin教学。
1.jetpack是什么?Jetpack就是Google官方推出的一套方便开发者的库。
Android Jetpack 开发资源 - Android 开发者 | Android Developers (google.cn)
Android Jetpack 组件覆盖以下 4 个方 ...
LeakCanary为什么这么神奇?
之前简单介绍了一下使用LeakCanary排查内存泄漏的使用,那么它为什么这么”智能”呢?为啥我们就加了一行代码它就可以监测内存泄漏了捏?这里就涉及LeakCanary的源码了。
源码分析上面简单介绍了一下使用LeakCanary排查内存泄漏的使用,那么它为什么这么”智能”呢?为啥我们就加了一行代码它就可以监测内存泄漏了捏?这里就涉及LeakCanary的源码了。
在理解LeakCanary源码之前我们先来了解一下java虚拟机里的强引用,软引用,弱引用和虚引用。
强引用(Strong Reference):强引用在代码中普遍的存在,类似于“Object obj = new Object()”,只要某个对象有强引用与之关联,JVM则无法回收该对象,即使在内存不足的情况下,JVM宁愿抛出OOM错误,也不会回收这种对象。
软引用(Soft Reference):软引用常常用来描述一些有用但是非必需的对象。对于软引用关联的对象,会在JVM内存不足时既OOM之前将这些对象列入回收范围,进行二次回收。如果这时回收还是没有足够的内存才会造成内存溢出异常。在JDK1.2之后,提供了Sof ...
浅学Android性能优化
Android性能优化性能优化是一个app很重要的一部分,一个性能优良的app从被下载到启动到使用都能给用户到来很好的体验。自然我们做性能优化也是从被下载(安装包优化)、启动(启动优化)、使用(渲染优化、耗电优化、内存优化………)等入手。因为我也是个菜鸟,所有东西都是现学的,所以过程中有任何问题都可以提出来,大家一起长知识。
安装包优化当今手机的内存普遍是128G或者256G,当用户长时间使用,产生了大量数据后,留给app安装的空间可能只有几十个G,甚至更少。所以一个app的大小可能就决定了用户是否选择你。
优化方案:
清理无用资源
在app打包的时候一些废弃的代码和无用的资源可能也会被打包,这无疑会增加app的体积。好在Android Studio有这么一个检测无用资源和代码的功能。具体方法是【Refactor】->【Remove Unused Resources..】
再点击【Preview】可查看和选择无用的资源和代码。
使用Lint工具检查代码
Android-Lint是as集成的一个代码检查工具,它可以检测图片是否重复,优化xml布局等等。
具体使用是Androi ...