Android开发那些事
记录Android开发的方方面面,原生,Hybrid。。。
浩浩的代码花园
一线互联网公司Android开发工程师
展开
-
refield
reified关键字由于 Java 中的泛型存在类型擦除的情况,任何在运行时需要知道泛型确切类型信息的操作都没法用了。比如你不能检查一个对象是否为泛型类型T的实例:☕️<T> void printIfTypeMatch(Object item) { if (item instanceof T) { // ???? IDE 会提示错误,illegal generic type for instanceof System.out.println(item);原创 2021-11-09 10:35:32 · 1876 阅读 · 0 评论 -
Kotlin inline noinline crossline
inline 关键字的用处:高阶函数(Higher-order Functions)有它们天然的性能缺陷,我们通过 inline 关键字让函数用内联的方式进行编译,来减少参数对象的创建,从而避免出现性能问题。所以,inline 是用来优化的吗?是,但你不能无脑使用它,你需要确定它可以带来优化再去用它,否则可能会变成负优化。其实换个角度想想:既然 inline 是优化,为什么 Kotlin 没有直接开启它,而要把它做成选项,而且还是个默认关闭的选项?就是因为它还真不一定是优化,加不加它需要我们自己去.原创 2021-11-07 19:47:56 · 2035 阅读 · 0 评论 -
Java 判断两个对象是否相等
一、使用 == 与 equals==: 它的作用是判断两个对象的地址是不是相等。即,判断两个对象是不是同一个对象。(基本数据类型==比较的是值,引用数据类型==比较的是内存地址)equals(): 它的作用也是判断两个对象是否相等。但它一般有两种使用情况:情况1:类没有覆盖equals()方法。则通过equals()比较该类的两个对象时,等价于通过“==”比较这两个对象。 情况2:类覆盖了equals()方法。一般,我们都覆盖equals()方法来两个对象的内容相等;若它们的内容相等,则返..原创 2021-11-07 15:37:55 · 9951 阅读 · 1 评论 -
使用hashmap为什么要同时重写hashcode和equals
当equals方法被重写时,通常有必要重写hashCode方法,以维护hashCode方法的常规约定:值相同的对象必须有相同的hashCode。HashMap是由数组和链表组成的高效存储数据的结构。那么是如何确定一个数据存储在数组中的哪个位置呢?就是通过hashCode方法进行计算出存储在哪个位置,还记得我们上面讲hashCode方法说了有可能两个不同对象的hashCode方法返回的值相同,那么此时就会产生冲突,产生冲突的话就会调用equals方法进行比对,如果不同,那么就将其加入链表尾部,...原创 2021-11-07 15:35:07 · 457 阅读 · 0 评论 -
OKHttp 的缓存策略
OKHttpClient:相当于是okhttp的控制器,可以添加拦截器,发起网络请求Request:构造网络请求参数,添加缓存控制(cachecontrol)缓存策略添加:cachecontrol原创 2021-11-07 14:54:19 · 221 阅读 · 0 评论 -
Recycleview notifyItemChanged的执行过程
创建Recycleview时会设置一个adapter,在此处会调用adapter.registerAdapterDataObserver设置一个数据变动监听。调用notifyItemChanged --->> 调用到观察者的onItemRangeChanged的回调,最终会通知到RecyclerviewDataObserver的onItemRangeChanged将更新事件封装成一个UpdateOp之后装载到pendingUpdates里面然后会调用triggerUpdateProc原创 2021-11-06 21:44:41 · 622 阅读 · 0 评论 -
深入剖析Java中的装箱和拆箱
自动装箱和拆箱问题是Java中一个老生常谈的问题了,今天我们就来一些看一下装箱和拆箱中的若干问题。本文先讲述装箱和拆箱最基本的东西,再来看一下面试笔试中经常遇到的与装箱、拆箱相关的问题。 以下是本文的目录大纲: 一.什么是装箱?什么是拆箱? 二.装箱和拆箱是如何实现的 三.面试中相关的问题 若有不正之处,请谅解和批评指正,不胜感激。一.什么是装箱?什么是拆箱? 在前面的文章中提到,Java为每种基本数据类型都提供了对应的包装器类型,至于为什么会为每种基本数据类型提供包转载 2020-09-10 15:57:59 · 142 阅读 · 0 评论 -
syntronized锁膨胀过程
这几天在逛B站时看别人的面试过程,问到了syntronized的锁膨胀过程,突然发现自己对这块不是很了解,在网上收集了一些资料记录一下:首先:为什么要有锁膨胀过程:在java 1.6之前,syntronized的操作是一项非常重的操作,属于重量级锁,但是Java的开发者们发现其实很多时候锁的竞争机制不是那么激烈的,没有必要在一个同步块中采取这样消耗性能的方式来处理,因为资源的竞争,加锁解锁,涉及到了用户态和内核态的转换。所以在Java1.6的时候,他们对这个关键字进行了一些优化,这就是syntr原创 2020-08-01 15:21:34 · 381 阅读 · 0 评论 -
把烦恼都抛给虚拟机——InstanceHolder单例
01—你知道的有段时间没有发文了,最近全量复工了,公司这边也接了一个比较重要的项目。也感谢大家,在断更的这段日子里依然不离不弃。毕竟,我的读者智商超越了99%的人。不过工作归工作,学习的进程还是不能停的。今天,就向大家介绍一款我最近遇到的神奇的单例写法。说起单例,相信大家一定都不陌生了,什么懒汉式,饿汉式,双重检查。。。。。。单例的常...原创 2020-05-06 14:01:04 · 765 阅读 · 0 评论 -
为了弄懂Retrofit源码系列文章——Java动态代理到底是怎么回事
自己的接口怎么Duang~的一下就可以运行了???原创 2020-04-15 13:16:24 · 200 阅读 · 0 评论 -
为了弄懂Retrofit源码,我把Java从底层撸了一遍
事情是这样的:最近在研究Retrofit,相信读过它源码的朋友都知道,里面涉及了大量的反射和注解的调用,尤其是在请求建立的时候 ,使用了Java的动态代理方法,Proxy.nexInstance,由于之前在反射应用这块比较少,就本着打破砂锅问到底的态度查了一下反射的工作原理,为什么进去的时候是一个类,出来的时候就可以运行了?然后我又查到了,要了解反射的工作原理,及需要知道虚拟机类的加载机制,而...原创 2020-04-13 12:09:02 · 256 阅读 · 0 评论 -
轻量级Android事件派发框架——EventBus源码全解析
说到当今Android开发领域,最火的事件派发框架,EventBus绝对是黑科技满满,C位出道。在经历了历史上2个比较大的版本迭代后,它以其轻巧、简单、无侵入性的使用方式,吸引了越来越多的移动端开发者,并将其囊括进了他们的APP开发框架当中。正好赶在清明假期,抽时间来研究了一下框架的源码,顺带也熟悉了一下Annotation注解的使用方式。不得不说,注解对于Java所带来的优势太大了。...原创 2020-04-06 18:29:52 · 357 阅读 · 0 评论 -
拿什么拯救你,我的Github——国内该如何光速访问(亲测有效)
关注我,即可解锁我的全部博文。欢迎大家点赞、留言与我交流说到全球最大的程序员基友网站,大家一定都知道!没错,就是全球最大的开源社区——Github。日常撸代码,我们最常用的就是他。奈何近些年网络技术发展太快,有些地方已经严重到不能访问的地步,这怎么可以,总不能阻止我一颗积极向上好好学习的心呐。笔者也曾经历过这样的痛苦:打开Github主页要半分钟或一分钟,clone一个项目下...原创 2020-03-31 16:07:39 · 5044 阅读 · 2 评论 -
Android进阶学习——Binder是如何工作的?
随着Android相关技术的不断发展,动态化,可插拔,插件化等越来越多的高端名词不断地涌现在我们的视野当中,那么如何来学习这些技术,也就成为了Android开发工程师需要重点关注的内容。当然,万物不离其原理,刚刚提到的这些技术,其实都基于Android系统的IPC机制,也就是我们今天的主角——Binder。提到Binder,相信很多人都熟悉,但可能真正用到的人很少。因为,除了一些特殊需求,...原创 2020-03-31 15:15:54 · 163 阅读 · 0 评论 -
写给新人的话——谈谈应届生入职后应该怎样快速成长
Hello,All,我是来自58同城的一名Android开发工程师,在58集团从事APP的开发工作。欢迎为本篇文章点赞,评论PS:关注,私信我,帮你内推58,常年招聘前端,移动端,后端,算法。也欢迎关注我的公众号,在这里可以找到我,同时,这里会不定期地推送一些时下最热门的技术文章和互联网行业工作心路历程又到了一年一度的招聘季,不同于往日火爆的春招场面,今年的招聘活动受疫情影响严...原创 2020-04-18 23:01:40 · 2671 阅读 · 0 评论 -
APP优化到底该咋办?——谈谈ViewStub为什么能帮我们提高UI加载速度?
Hello,All,我是来自58同城的一名Android开发工程师,在58集团从事APP的开发工作。欢迎为本篇文章点赞,评论PS:关注,私信我,帮你内推58,常年招聘前端,移动端,后端,算法。也欢迎关注我的公众号,在这里可以找到我,同时,这里会不定期地推送一些时下最热门的技术文章和互联网行业工作心路历程 ...原创 2020-03-21 11:02:38 · 235 阅读 · 0 评论 -
OKHttp同步网络请求原理分析(图文并茂,看困包赔)
项目中最近将网络请求层迁移到了okhttp,一直以来也没有好好地看他的源码,今天项目测试中,抽空分析一下源码先从最经典的网络请求开始OkHttpClient okHttpClient = new OkHttpClient();先new了一个okHTTPClient对象出来,我们来看看okHttpClient里面都做了些什么public OkHttpClient() { ...原创 2020-03-20 11:37:55 · 596 阅读 · 0 评论 -
Android进阶学习——Message复用机制原理
最近在学习Android消息机制方面的原理,到了Message这块的时候发现少有文章进行分析,本着“生死看淡不服就干”的原则,我深入了源码层面,对Message巧妙的复用机制进行了解析,并写下这篇文章,供大家分享学习,如果感觉对你有帮助,欢迎点赞,私信,关注我,您的鼓励是对我最大的帮助。在日常的Android开发中,我们经常会使用Handler来进行主子线程之间的消息传递,其中我们用的最多的就...原创 2020-01-22 21:56:55 · 816 阅读 · 0 评论 -
Android自问自答系列——持续更新ING
Hello,All,我是来自58同城的一名Android开发工程师,在58集团从事APP的开发工作。在日常的工作和学习过程中我经常会碰到一些好玩的和有意思的Android小知识点,有些知识可能都从未注意到过。通过一个多月的收集和整理,我发现通过不断地记录这些问题达到了非常好的复习效果,从而帮助了工作上的持续进步,今天我也是把平时收集到的这些东西发出来供大家一起学习,共同成长,如果感觉好,欢迎点击右...原创 2020-01-22 21:06:56 · 3101 阅读 · 0 评论 -
Android图形变换——Matrix学习
说到Android的图形变换就不得不提Matrix,包括安卓在内的很多计算机图形的变换都是基于矩阵来进行的,常规的操作如平移,旋转,缩放等操作,都是通过矩阵之间的相加,前乘、后乘来实现的。那么首先,我们就必须知道,为什么Android中的Matrix是一个3*3的坐标系,而不是4*4或者2*2呢。我们知道,如果要实现平移变换,只需要对对象的x,y值进行操作即可写成矩阵的形式就是...原创 2019-11-29 14:04:21 · 281 阅读 · 0 评论 -
谷歌官网学习笔记
关于支持包:原文:部分支持库软件包的名称会指示其最初支持的最低 API 级别。这些名称使用 v# 表示法,例如 support-v4 软件包。从支持库版本 26.0.0(2017 年 7 月发布)开始,所有支持库软件包所支持的最低 API 级别已更改为 Android 4.0(API 级别 14)。因此,在使用任何最新版本的支持库时,您不应假设 v# 软件包表示法会指示最低 API 支持级别。...原创 2019-11-27 13:24:11 · 213 阅读 · 0 评论 -
Android进阶学习——TaskAffinity和allowTaskReparenting
对于日常的工作而言,可能android系统的四种启动模式已经能够满足我们的需求,稍微复杂一些的功能比如后端指定调用某个页面,通过Server端下发某个地址给移动端,解析action等信息后通过scheme协议,就可以完成跳转。今天在看Android开发艺术探索的时候看到了一个知识点,之前没有遇到过,那就是TaskAffinity和allowTaskReparenting先说TaskAffi...原创 2019-10-28 20:04:10 · 552 阅读 · 0 评论 -
android进阶学习——Activity相关
重要和未知的知识点记录:(知识来自于 Android开发艺术探索)当用户打开新的Actvity或切换当前Activity到桌面的时候,回调如下:onPause->onStop。但是这里有一种特殊情况就是如果新activity采用了透明主体,当前Activity不会回调onStop当activity在异常情况下发生终止,系统会调用onSaveInstanceState,他的调用时机在o...原创 2019-10-24 21:23:04 · 163 阅读 · 0 评论 -
小记cookie
今天项目提测,暂时还没有bug,来梳理一下cookie的知识,在58的账号项目中,cookie使用并不多,但由于涉及票据和http数据交换的相关内容,还是学习一下吧在HTTP协议的定义中,采用了一种机制来记录客户端和服务器端交互的信息,这种机制被称为cookie,cookie规范定义了服务器和客户端交互信息的格式、生存期、使用范围、安全性。Cookie在远程浏览器端存储数据并以此跟踪和识别...原创 2019-10-21 20:49:26 · 156 阅读 · 0 评论