
Android 进阶
文章平均质量分 83
Android进阶内容
东土也
这个作者很懒,什么都没留下…
展开
-
Android 模块化工程构建
该工程使用的gradle版本为7.4.0,使用的gradle插件是7.3.0,kotlin插件版本为1.7.10,每个模块都有简单的说明,有需要的可以看一下。之后在各个模块中的依赖我们只需要引用dependencies.gradle中的变量就可以,具体的版本号将在dependencies.gradle得到统一的管理。这会改变引用包的可见性,让引用common模块的其他模块也能使用common中引用的第三方。想象一下这个场景,如果我们的下单模块需要去验证是否登陆,而登陆的业务是在登陆模块中的。原创 2022-11-02 11:58:29 · 762 阅读 · 1 评论 -
Retrofit源码分析笔记(一)
外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-v5QvubsS-1665971394325)(https://p6-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/cf8da32d42d4499f8bf94ce879fa0da9~tplv-k3u1fbpfcp-watermark.image?原创 2022-10-18 09:45:30 · 216 阅读 · 0 评论 -
Retrofit源码分析笔记(二)Kotlin协程的实现
我们先来看SuspendForResponse,在调用retrofit的invoke方法后,最后会调用的SuspendForResponse的adapt方法,上面我们已经说了CallAdapter会选择DefaultCallAdapterFactory,调用。那么Retrofit是怎么适配协程的呢。在上一篇文章中,我们了解到retrofit的入参解析,在入参解析的时候就kotlin就已经确定是否需要使用协程,下面的代码中,p == lastParameter如果为true则方法使用了协程。原创 2022-10-18 09:44:25 · 356 阅读 · 0 评论 -
如何通过组合的方式自定义View
上面的代码中,第一句是通过obtainStyledAttributes解析上面XML文件中属性名为InputItemLayout的属性内容,并返回TypedArray,后续该命名空间中的所有属性都可以通过TypedArray.getXX()来获得XX是属性类型。如上代码,我们先获取在InputItemLayout属性中titleTextAppearance的属性,这时候发现titleTextAppearance是一个引用类型的属性,在使用。最终我们获取了所有的属性,这时候就可以开始自定义你的View了。原创 2022-10-17 09:36:58 · 604 阅读 · 0 评论 -
Android常用多线程解析(二)线程安全
1.线程的优先级是具有继承性的,在某个线程中创建的线程会继承线程的优先级。例如我们在UI线程中创建了线程,则线程优先级和UI线程优先级一样,平等的和UI线程抢占CPU时间资源。Volatile修饰的成员变量在每次线程访问时,都强迫从共享内存重新读取该成员的值,而且,当成员变量值发生变化时,强迫将变化的值重新写入共享内存。2.JDKAPI 中限制了新设置的线程优先级必须为[1~10], 优先级priority越高,获取CPU时间片段的概率越高。join关键字的作用是等待目标线程执行完后再执行此线程。原创 2022-10-17 09:35:52 · 721 阅读 · 0 评论 -
Android常用多线程解析(一)线程的使用
外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-0Qwcwr1O-1665970419072)(https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/2eaa659a5bb24a4b85385e84b58b362d~tplv-k3u1fbpfcp-watermark.image?)]上图是Android中多线程实现的主要方式,和线程的控制流程。原创 2022-10-17 09:34:23 · 1062 阅读 · 0 评论