首页
AI Coding
NEW
沸点
课程
直播
活动
AI刷题
APP
插件
搜索历史
清空
创作者中心
写文章
发沸点
写笔记
写代码
草稿箱
创作灵感
查看更多
会员
登录
注册
Android
MxsQ
创建于2021-09-04
订阅专栏
安卓知识集哦
等 3 人订阅
共19篇文章
创建于2021-09-04
订阅专栏
默认顺序
默认顺序
最早发布
最新发布
Parcelable 是如何实现的
序列化,简单来说,就是将对象数据,按照一定的规则,转成一串有迹可循的二进制流,然后将此二进制流在双方中传输。其中,输出方按照约定的规则转译对象,接收方按照约定的规则进行翻译,从而获得有效数据。 应对Android的日常开发中,出镜率最高的序列化手段无非Serializable、…
Okio好在哪
与很多Android小伙伴一样,接触到Okio也是在接触Okhttp之后。在Okhttp中,每个请求通过拦截链处理,而Okio则在CallServerInterceptor中,对建立起连接的请求进行读写。 刚好自己对Java原生IO也不熟,就两个一起学了。本篇文章分为三个部分,…
我所理解的Handler
Handler不管是作为一种消息机制,还是作为切换线程的手段,在Android中都有充足的应用场景。在不了解Handler原理的情况下,仅知道上层API如何发送消息,如何处理消息,加之了解一些Handler容易造成的问题以及应对策略,实际上也不会造成什么大问题。 Handler…
你逃不掉的APK安装原理
你是否知道APK是如何进行装载的?又是否知道APK具体的安装原理。当你以此为契机查阅各种资料的时候,发现各不相同,抓不到核心部分,找不到原因,很容易陷入萌萌哒状态。 仔细想想,平日能接触到的APK安装场景,主要有四种。针对每一种为出发点,有不同的应对策略,这也是为什么能查阅到的…
手动实现一次插件化
在项目迭代过程中,业务愈加复杂,在单工程开发模型下,业务模块耦合度极高,模块边界模糊,对工程所做的任何修改都必须编译整个工程,团队协同暴露出诸多冲突与不便,不得不向多工程开发模型发展。代表为组件化、插件化。 多工程开发模型的核心点在于,能像搭积木一样灵活地将各个模块组装形成一个…
应用进程是如何创建出来的
APP各自运行于自己的进程中,每一个进程中都拥有一个独立的Dalvik虚拟机实例,拥有了Dalvik,Android的Java程序才能运行起来。可以理解为,进程在以隔离了用户环境下运行,使各不干扰。常用的四大组件,要能运行起来,首先就需要APP的进程已准备完毕。 本文的目的,是…
Activity启动时发生了什么
平日开发,Activity.startActivity()算是熟面孔,功能无须赘言。但它又像是最熟悉的陌生人,因为仅仅API,是不知道在启动一个Activity时,发生了什么。这也是本文的目的———说清Activity的启动发生的事情。 但开篇并不是从Activity.star…
相机小白自定义Camera实践
机缘巧合,需要自定义相机,几日折腾下来,对相机开发有了一定认识,做个小结。 相机控制,预览,操作等应该是视图无关的。放在任意的页面,做简单的配置便可以使用。 CameraView对外屏蔽了种种使用相机可能造成的隐患,仅需要暴露必要的接口达到安全操控相机的操作即可。 对于具体UI…
你的数据还可以这样Mock
本文提供一种实现Mock数据的解决方案,解决思路为核心,实现则以OkHttp3为例,可根据提供的思路将方案嵌入实际项目代码中。 开发项目中,不管是等待API的完成,还是测试API正常、异常流是否达到预期,都需要相应的响应数据验证。但是等待他人提供API是痛苦的,Mock数据也痛…
OkHttp3拦截链
在使用的网络框架中,一般都会涉及拦截链的运用,因为拦截链带来的好处显而易见。比如,通过拦截链可以对Request和Response进行各类的工作,比如Header的预处理、Host的装配、Log的采集、Cache的运用、Mock的调度、Connection的复用等,都可以与拦截…
来一波OkHttp3
目前来看,大多数Andoird项目里,如果没有自主的网络库,大多数会选择使用Retroift作为媒介与网络交互。而Retroift的内核实际为OkHttp3,Retroift使使用OkHttp3来达到目的更简单。可以这样说,OkHttp3提供了足够强大的能力来支撑与网络交互,优…
初识Jetpack—Navigation
Google不久前推出了Navigation框架, 此框架可以方便的管理Fragment,可以看作是针对于Fragment的路由。 看到这篇文章,可以知道Navigation是如何实现的,上手文档可以参考一下下面的博文。 如果没有 “New Resource File” 选项,…
说一说事件分发
在对APP操作的过程中,会产生一系列的Touch事件,这些事件会按照一定规则分发到相应的View上的进行处理。这样的分发和处理过程简称事件分发。 理解事件分发算是基本功,否则难以处理各类与Touch有关的冲突问题。最新重新看了看事件分发,宏观来说,它的机制不难,但在细微处,在事…
RxJava2 源码三:线程调度
其实,从Rx调用链上,线程调度仅是遵守运转机制的一环,但因其便捷、高频的特点,并在项目中很可能需要切换到自己的线程里,故将其选出,理解如何实现。 由于流程、链式均做了阐述,因此案例直接定位到线程调度线程。上面的案例中,下游被切换到了新的线程里进行响应。 Rx中,由调度器负责提供…
RxJava2 源码二:链式的秘密
上一篇文章,对Rx进行了梳理,大致了解了什么是Rx,并对RxJava的基本流程进行了跟踪,如忘记其中关键点,及时回顾。 从Rx的机制上来说,事件的持续进行运转于调用链之上,也就是说,调用链上的每一环节,承载了各自的任务,并对事件的最终完成或异常状态提供了对应出口。那分门别类的任…
RxJava2 源码一:初识Rx
自此文章起,逐层迈入RxJava2源码世界,探索Rx思想。 此前,需要对Rx有简单了,起码曾使用过。对于必要的证明外,不贴出具体案例。文章分成若干篇讲解,确保理解清晰,结构明了,此为开篇。 Rx的出现,是为了以可观察序列和LINQ风格查询操作符来编写异步和基于事件的程序(引自官…
数据共享与持久化, ViewModel 的使用与原理
ViewModel属于ACC框架组件之一,用以解决数据持久与共享问题,此外,也将数据的相关行为从UI中分离出来。 对于ViewModel的使用以及原理,可能需要对Lifecycle和LiveData有一些理解,不然可能会影响对某些内容的理解。以下为可参考资料。 描述:LiveD…
LiveData - 可被感知的数据
在了解LiveData并学习其原理之前,需要先知道Lifecycle的使用以及原理,否则下文某些部分可能较难理解。 简单来说,LiveData作为一种媒介去持有数据,在数据发生改变时,去通知监测owner并处于active状态的观察者作出应对。 案例行为:LiveData持有S…
Lifecycle 原理详解,生命周期管理利器
简单来说,Lifecycle是官方提供以方便管理声明周期事件的方式,给Activity、Fragment减肥。能把他们之中在生命周期变动时,需要做的各类事件抽离出来,集中到我们想的地方进行管理。 从日志中能看到,各生命周期变动时相应的被标示的函数都获得了执行机会,并且ANY在任…