区伯肺癌病重:一位逐渐被遗忘的广州公民

前外交部副部长傅莹:一旦中美闹翻,有没有国家会站在中国一边

Weixin Official Accounts Platform

去泰国看了一场“成人秀”,画面尴尬到让人窒息.....

多年来,中国有个省,几乎每一个村庄都在偷偷“虎门销烟”

自由微信安卓APP发布,立即下载! | 提交文章网址

徐公

ChatGpt,普通人如何做到年薪 50 万、100 万

万元年收入需要努力、耐心和坚持,并需要根据个人情况和市场状况进行调整。如果您遵循以上建议,努力工作,并始终保持积极的态度,您一定能够实现更高的收入目标。对于一个工具来说,ChatGpt
2月9日 上午 8:00

国内 ChatGpt 的正确使用方式及使用体验,2023 年 2 月亲测可用

等浏览器,使用也很简单,用谷歌搜索时会在右侧给出chatGPT的回答。插件直接从谷歌商店下载优点:无需注册账号,直接可用缺点:仍然需要访问外网的梯子Awesome
2月8日 下午 6:00

原创 140 多篇,是时候来篇总结了

程序员的成长笔记徐公随笔关于小米得屌丝者得天下的一些思考延迟享受,在最好的年纪请不要选择安逸我面试人只看这4点那些年,我们一起追过的安卓技术大佬们职场上这四件事,越早知道越好干起来,你就超过了
2022年9月26日

魔幻的虾皮,又裁员了,真的是虾。。。

这是我的一个小号,主要分享职场相关和一些程序员八卦的,有兴趣的可以关注一下哈。
2022年9月23日

Android 页面异步加载优化的几种方案

}完美实现了秒进复杂页面的功能。当然有同学说了,自己写的行不行哦,会不会太Low,好吧,其实官方自己也出了一个异步加载布局框架,一起来看看。二、AsyncLayoutInflater部分源码如下:
2022年9月20日

详解Gson的TypeToken原理

TypeToken(){}.getType();23//调用fromJson方法时把type传过去,如果type的类型和json保持一致,则可以反序列化出来4gson.fromJson(json,
2022年9月15日

【原理篇】WebView 实现嵌套滑动,丝滑般实现吸顶效果,完美兼容 X5 webview

可以实现很多炫酷的效果,比如吸顶效果等。有兴趣的话可以看这些文章。使用CoordinatorLayout打造各种炫酷的效果自定义Behavior
2022年9月8日

【使用篇】WebView 实现嵌套滑动,丝滑般实现吸顶效果,完美兼容 X5 webview

WebView,在解决过程中。又遇到了一些问题,觉得挺有代表性的,就记录了下来。如果你也有相似的问题,可以参考这种思路解决。实现原理简述讲解之前,我们先来看一下效果图webview
2022年8月31日

Android 手把手教你实现自定义车牌输入法

EasyVehicleKeyBoard国内地址EasyVehicleKeyBoardapk体验githubEasyVehicleKeyBoardapk推荐阅读:什么?Android
2022年8月23日

SPI 机制及在Android中的使用

}最终生成了配置文件中的类便指向了我们自定义的Processor。image.png当这个模块在使用的时候,便可以通过该配置找到具体的实现类,并完成实例化。推荐阅读:什么?Android
2022年8月18日

什么?Android 编译线程爆了, gradle 内存 OOM 解决之路

的错误文件。内容大概如下image.png这个对我们的开发效率还是有挺大影响的,如果能够解决,对我们的开发效率还是有一定提升的。因此,我们尝试进行解决。探索原因从报错的信息来看,'jar
2022年8月15日

巨丝滑 —— 自己动手撸一个Android图片编辑器(支持长图)

作者:miaowmiaow来源:https://juejin.cn/post/7013274417766039560前言产品拿着IOS的微信图片编辑给我看了下说:“这个功能应该很简单吧,你应该很快就能做好吧”。如果当时我的桌子上有块🧱的话,估计就是另一个结局了。😂
2022年8月11日

一文学会字节码替换,再也不用担心隐私合规审核

}37}miaow.properties1implementation-class=com.example.miaow.plugin.MiaowPluginScanBean
2022年8月8日

安卓高敏感权限,你了解几个呢

}10}1//打开无障碍申请界面2startActivity(Intent(Settings.ACTION_ACCESSIBILITY_SETTINGS))三、通知监听
2022年6月23日

Android 代码覆盖率如何实现

}可以看到ExecutionData做了内存存储,并没有做本地的文件存储。所以,当我们想要用jacoco来实现多人协作的覆盖率合并时,就需要自己实现当前覆盖率结果的文件存储。如下代码所示:1fun
2022年5月30日

开发AndroidStudio图片压缩插件TinyPngPlus

作者:帅气的铅笔来源:https://blog.csdn.net/qq_28779083/article/details/123833645相信很多人都遇到切图过大需要压缩后再使用的问题。少的话,还好说,一旦多起来,那种感觉又上来了…难受于是谷歌、百度大法找了一通轮子。有!但不太符合自己的使用习惯。还不如就此造一个,顺便练习一下插件的开发与发布流程。开心至于插件的开发过程,这里就不打算记录了,谷歌一下就有很多教程。主要还是介绍一下插件实现的功能与使用。有需要的可以直接拿去用。TinyPngPluginPlus
2022年4月7日

支持 Android 12,全版本保存图片到相册方案

作者:de得得de来源:https://juejin.cn/post/7042218651482587172背景wallhaven-rdyyjm_1920x1080.jpg由于Google对用户隐私和系统安全做的越来越完善,应用对一些敏感信息的操作越来越难。比如最常见的共享存储空间的访问,像保存图片到相册这种常见的需求。Android
2022年3月31日

ConstraintLayout最详细使用,减少嵌套优化ui,提升app性能

作者:岩浆李的游鱼leo2来源:https://juejin.cn/post/7071165641973530638#heading-5可能你觉得ConstraintLayout属性多,且属性长而弃用它,那你错失了这个大宝贝。因为在复杂布局,我们会一直用RelativeLayout和LinearLayout去嵌套,因为嵌套的ViewGroup会导致手机多次测量和绘制,从而影响性能,如果嵌套严重可能出现掉帧或卡顿。使用ConstraintLayout一招入魂。一句话概括是:传统布局能实现的,它能轻松实现实现。传统布局不能实现的,它也能实现。一、为什么要用呢?这里举个2个简单的例子。1.1、例1如图下图所示,我们分别用RelativeLayout和ConstraintLayout去实现它:1.png1.1.1、使用RelativeLayout实现如下
2022年3月24日

​Android 快速适配 64 位架构

8xxx\ccd11b53aab95a933b06ef9e74f9fb44\sentry-android-ndk-3.1.3\jni\armeabi-v7a\libsentry-android.so
2022年3月17日

『Android自定义View实战』实现一个小清新的弹出式圆环菜单

作者:Android小Y来源:https://www.jianshu.com/p/1c0069f07b15前言Android表现快捷菜单的形式有很多种,比如使用PopupWindow弹出来的小弹窗,类似QQ的侧拉功能菜单,以及之前讲过的弧形菜单(
2022年3月7日

读源码长知识 | 更好的 RecyclerView 表项点击监听器

作者:唐子玄链接:https://juejin.cn/post/6844903862361391117RecyclerView没有提供表项点击事件监听器,只能自己处理。这是读源码长知识系列的第一篇,该系列的特点是将源码中的设计思想运用到真实项目之中,系列文章目录如下:读源码长知识
2022年3月1日

Android IO监控 | 性能监控系列

}我们在proxyWrite方法内进行了一部分改造,将所有的写入大小和时间等在java层进行汇总计算。由于写入放开了线程的限制,所以我们把这部分记录操作放在了一个
2022年2月22日

Android 弹幕的两种实现及性能对比 | 自定义 LayoutManager

作者:唐子玄链接:https://juejin.cn/post/6844903862361391117引子上一篇用“动画”方案实现了弹幕效果,自定义容器控件,每一条弹幕都作为其子控件,将子弹幕的初始位置置于容器控件右边的外侧,每条弹幕都通过从右向左的动画来实现贯穿屏幕的平移。这个方案的性能有待改善,打开
2022年2月21日

读源码长知识 | 原来可以这样扩大 View 点击区域

}38}触摸代理的构造函数中需传入代理控件及其响应触摸事件的区域。若触摸事件落在该区域内则将事件传递给代理控件消费。所以只需将代理控件的响应区域人为地增大即可实现点击区域的扩大:
2022年2月15日

真牛系列 - 一步步解决 App 隐私违规问题

作者:蓝师傅链接:https://juejin.cn/post/7043399520486424612一、前言工信部对于App索权问题越来越重视,先后多个大厂App被下架要求整改工信部对于App索权问题越来越重视,先后多个大厂App被下架要求整改:106个app被下架.png其中最关键的问题是用户同意隐私协议之前,不能有收集用户隐私信息的行为,例如获取deviceId、androidId等信息,除此之外,对于频繁申请权限、超范围申请权限也是需要注意的。除了开迭代针对性整改,从技术角度思考,有没有一劳永逸的办法,杜绝隐私调用不合规问题呢?这就是这篇文章要介绍的方案,
2022年1月27日

这效果炸了,网易云音乐“宇宙尘埃”特效!

作者:MLX链接:https://juejin.cn/post/6871049441546567688前言前段时间,女朋友用网易云音乐的时候看到一个宇宙尘埃特效,说很好看,想要让我给她开VIP用。笑话,作为一个程序员为什么不能自己实现!开什么VIP!!什么女朋友?程序员有吗?我只在意特效的实现!0202年了,Android开发大都应该是老油条了把。如果你自定义View还是掌握得不够熟练的话,那可就说不过去了哦。自定义View可以说是Android开发中,无论是初级,中级还是高级都必须掌握的一个点。不然的话,UI一不小心设计的太炫酷,那你岂不是要和他打起来了?难道你不想成为下图中的男人吗?img所以,自定义View的重要性已经不用我多说了。本篇是针对有自定义View基础知识,但是苦于没有好的项目模仿,或者说看到了酷炫效果没有思路不知道该如何下手的人。恭喜你,我将一步步手把手的带你分析效果,然后代码实现它。我就知道没图是骗不到人的。先放图,大家看一下最终实现的效果。ps:为了能更快加载出来,gif是压缩了又压缩,大家可以脑部清晰度。ps2:小伙伴如果有好的gif压缩网站可以推荐一波img咳咳,虽然画质堪比AV画质,但是还是能看的出来效果是非常不错的。那么今天我就带小伙伴们一起从头到尾的实现一下这个效果吧。img特效分析首先看动图,我们可以拆成两部分完成,一个是里面不断旋转的圆形图片,一个是外面不断扩散的粒子动效。我们由易到难来完成,毕竟柿子要挑软的捏嘛。另外由于本篇重点是讲自定义View的,所以就不采用ViewGroup的方式来实现图片和粒子动效的结合了。而是采用分开布局的方式。这样做的好处是可以只专注于粒子动效的实现,而不需要去考虑测量,布局等。至于自定义ViewGroup,下一篇文章我将会带领大家实现一个非常非常非常酷炫的效果。加载图片我们先观察,首先这是一个圆形图片。其次,它在不停的转。img咳咳,先别骂,容我说完嘛。圆形图片的话我们就用Glide来进行实现把,其实自定义View实现也可以,但我们重点还是粒子特效。首先定义一个ImageView
2022年1月18日

爱奇艺 Xcrash 是怎么捕获 crash 的

作者:Stan_Z链接:https://juejin.cn/post/6991356414069309477一、Xcrash简介Xcrash是爱奇艺在2019年4月开源在GitHub上的稳定性日志收集框架,它能为android收集java
2022年1月12日

​Flutter自定义之旋转木马 - 带你回到童年时光

作者:龙之音来源:https://www.jianshu.com/p/4512486fc52b效果分析子布局按照圆形顺序放置且平分角度子布局旋转、支持手势滑动旋转、快速滑动抬手继续旋转、自动旋转支持X轴旋转支持前后缩放子布局(起始角度为前,相对位置为后,最前面最大,反而越小)多个布局叠加时前面遮挡后面效果难点问题Flutter如何实现控件布局达到3D效果?Flutter如何实现子控件旋转、自动旋转、手势滑动时关联子控件旋转滚动?快速滑动抬手继续旋转滚动?Flutter如何实现多个布局叠加时前面遮挡后面?1.子布局按照圆形顺序放置且平分角度如上图所示:圆形布局.png如上图所示(参考系:最下方为0度,逆时针旋转角度增加)
2022年1月10日

快手线上 OOM 监控方案 - KOOM 分析

作者:Stan_z链接:https://juejin.cn/post/6991374693403983886快手在2020年中旬开源了一个线上OOM监控上报的框架:KOOM,这里简单研究下。项目地址:https://github.com/KwaiAppTeam/KOOM/tree/v1.0.5一、官方项目介绍1.1
2022年1月7日

『Android自定义View实战』让你的轮播指示器“粘”起来 - 简书

完整代码已传至Github:一组实用炫酷自定义View的集合库(包括源码及demo)包括常见的支付、扫描、解锁动画、炫酷转盘式菜单等效果,欢迎issue和star~推荐阅读Android
2022年1月4日

Android 音视频开发【特效篇】【一】抖音传送带特效

1.0区域,从而就实现了该传送带特效在知道了如何实现该特效后,我们还可以实现纵向的传送带特效,只需要将片元着色器里的x改为y即可
2021年12月28日

Android 玩转PathMeasure之自定义支付结果动画

作者:Android小Y来源:https://www.jianshu.com/p/79f5e6d0e769概述最近在研究Android的路径动画,恕我直言,
2021年12月23日

Android NDK Crash 定位简单分析

作者:嘉伟咯来源:https://www.jianshu.com/p/25ddc3055214当拿到应用的crash日志,如果是在java层出现了异常,相信大家都知道通过堆栈信息查找到奔溃的代码,但是如果是在native层出现了问题,面对下面的一堆内存地址,有些小伙伴可能就会觉得无从下手了:
2021年12月20日

『Android自定义View实战』实现一个小清新的弹出式圆环菜单

作者:Android小Y来源:https://www.jianshu.com/p/1c0069f07b15前言Android表现快捷菜单的形式有很多种,比如使用PopupWindow弹出来的小弹窗,类似QQ的侧拉功能菜单,以及之前讲过的弧形菜单(
2021年12月16日

用了20多张图终于把协程上下文CoroutineContext彻底搞懂了

CoroutineContext.get方法源码(整理在一起,下同)使用方式讲解通过Key检索Element。返回值只能是Element或者null,链表节点中的元素值。Element
2021年12月14日

你真的理解 Kotlin 中扩展方法和扩展属性嘛

Person("Bob"));竟然也没有报错!由此可见,所谓扩展函数并不是真正的在类中增加了一个方法,而是通过外部文件的静态方法来实现,其实就是和Utils类一个道理。因为将一个
2021年12月7日

RxJava 堆栈异常信息显示不全,怎么搞

io.reactivex.android.schedulers.HandlerScheduler$ScheduledRunnable.run(HandlerScheduler.java:124)
2021年12月6日

面试官:你能说说生产者消费者的几种实现方式吗

作者:zgj12138来源:https://juejin.cn/post/6844903486895865864前言生产者和消费者问题是线程模型中的经典问题:生产者和消费者在同一时间段内共用同一个存储空间,生产者往存储空间中添加产品,消费者从存储空间中取走产品,当存储空间为空时,消费者阻塞,当存储空间满时,生产者阻塞。现在用四种方式来实现生产者消费者模型wait()和notify()方法的实现这也是最简单最基础的实现,缓冲区满和为空时都调用wait()方法等待,当生产者生产了一个产品或者消费者消费了一个产品之后会唤醒所有线程。
2021年11月30日

Android原生PDF功能实现

Demo,决定使用:android-pdfview。原因:1、android-pdfview基于PDFium实现(PDFium是谷歌
2021年11月26日

【开源项目】Compose仿豆瓣榜单客户端,了解一下~

作者:RicardoMJiang原文地址:https://juejin.cn/post/6999775929228591112前言Compose正式发布也有一段时间了,感觉要上手还是得实战一波。所以借着空闲时间,参照豆瓣榜单页面的设计,开发了几个Compose版的豆瓣榜单页面UI效果还是挺好看的,有兴趣的同学可以点个Star:Compose仿豆瓣榜单客户端效果图首先看下最终的效果图特性在项目中主要用到了以下几个特性,以美化UI及体验支持设置沉浸式状态栏及状态栏颜色支持水平方向滚动,竖直方向滚动等多种UI效果支持给Image设置渐变滤镜,以美化显示效果支持标题与列表页联动通过Paging支持了分页加载主要实现具体源码可以直接查看,这里主要介绍一些主要功能的实现沉浸式状态栏设置状态栏主要是通过accompanist-insets及accompanist-systemuicontroller库设置的accompanist上提供了一系列常用的,如状态栏,权限,FlowLayout,ViewPager等Compose库如果有时你发现基础库里没有相应的内容,可以去这里查找下设置状态栏主要分为以下几步设置沉浸时状态栏获取状态栏高度设置状态栏颜色
2021年11月24日

android ViewPager 仿画廊/图书翻页 与 palette 使用

}41}42复制代码先来看看目前的效果:img思路分析:要想完成画廊的效果,那么必须吧viewPager分为以下几步骤:让ViewPager显示出左右两侧的View无限滑动自定义ViewPager
2021年11月22日

有点酷,仿京东首页体验的嵌套滑动吸顶效果

根据自身情况决定是否要滑动dispatchNestedScrollonNestedScrolldispatchNestedPreFlingonNestedPreFlingchild
2021年11月17日

Hook AMS + APT实现集中式登录框架

null;16}其中调用了ActivityManagerNative.getDefault()的startActivity(),那么此处getDefault()获取到的是什么?接着看代码:
2021年11月12日

RecyclerView 多样式 Item 优雅解决方案

方法的实现!!!你品!你细细品!!!经此getItemViewType方法调用,进而得到position对应的viewType值,再返回,接着RecyclerViewAdapter生命周期就走到了
2021年11月10日

耗时一周,我解决了微信 Matrix 增量编译的 Bug,已提 PR

bug,这时候我是怎么解决的呢?欲知下事如何,请看下文,哈哈,卖一下关子。现象我们回到问题的本身,先描述一下现象,问题描述清楚真的很重要,尤其是在网上想别人请教的时候,你懂的。异常类型:编译异常&
2021年11月8日

Android QMUI实战:实现APP换肤功能,并自动适配手机深色模式

作者:Android、Unity3d来源:https://www.cnblogs.com/qixingchao/p/15417834.htmlAndroid换肤功能已不是什么新鲜事了,市面上有很多第三方的换肤库和实现方案。之所以选择腾讯的QMUI库来演示APP的换肤功能,主要原因:1、换肤功能的实现过程较简单、容易理解;2、能轻松适配Android
2021年10月27日

【面经分享】阿里大佬的5年 Android 开发的求职之路

作者:yechaoa来源:https://juejin.cn/post/6996551155220217869前言前段时间在看机会,本文就是我对求职过程的一个总结。同时,也作为一个面试官,来说说求职中需要注意的点。各大厂的面试会考核哪些知识点5年开发应该具备哪些技术要点当下市场行情如何,真的很卷吗写简历需要注意什么自我介绍怎么准备关于为什么离职未来职业规划问题如何避坑被问到自闭,如何调整心态我个人的学习方法其他注意事项面试题先上主菜一面技术京东GC原理,有哪几种GC方式HashMap原理Hybrid开发流程、机制WebView内存泄露包体积优化自定义View需要注意哪些事件分发机制ViewModel原理屏幕旋转ViewModel怎么做到保存数据的LiveData原理Flutter线程机制,单线程多线程组件化开发介绍一个自己的开源项目有参与过别人的开源项目吗字节跳动浏览器输入一个地址,按下回车,这个过程是什么样的简单介绍一下TCP简单介绍一下Https说说对称加密和非对称加密,说说公钥并发操作如何保证线程安全锁有哪些简单介绍一下HashMapArraylist是线程安全的吗知道CAS、原子性吗AtomicBoolean和boolean的区别用过哪些设计模式介绍一下观察者模式用过哪些排序算法介绍一下贪心算法介绍一下快排原理算法,给定一个有序不重复数组,使用时间复杂度小于N方的方法,找到所有两两相加等于target值的组合:int[]
2021年10月22日

Android 组件化架构下模块自加载方案

自身来管理,避免与其他模块的逻辑耦合;加载时机可以控制,能做到即时加载或者懒加载,避免产生性能损耗;不产生额外的性能损耗(可接受范围内);模块化自加载方案(ALoader)方案:
2021年10月13日

很任性!我开发了一款自己用的天气预报 app

来源:https://www.jianshu.com/p/da1671822e88天气预报可以说是我们日常必备的工具,尤其是在夏季多雨季节,天气预报App的使用也成了家常便饭。国内主流的手机系统都自带了天气预报App,但是很多界面比较丑,有些还强制要打开定位才能使用。再说一下那些三方的天气预报App,虽然界面比较美观,数据相对准确,但存在大量广告、资讯,严重影响使用体验。作为高级安卓代码搬运工的我,实在忍受不了这些,那咋办?自己开发一个吧。功能主要功能如下:城市定位,城市管理城市实时天气状况、温度、大气压、相对湿度、降水量、风力风速风向、能见度,AQI空气质量数据逐小时天气动态曲线15日天气预报各种天气特效日出日落和月升月落桌面Widget及通知栏预览先放几张最终效果图吧,省的浪费你的时间:|||功能大概就是这样,UI效果上参考了360天气,如果不合你的意请不要浪费时间,如果你想直接看代码,直接来这里风云天气[1]第三方服务天气数据天气数据来源于和风天气[2],它是一个专门提供天气数据的平台,提供了限量的api请求次数,完全满足日常使用需求。定位服务App中定位使用的是高德定位,使用Android原生的API也是可以的。主要功能实现主体界面参考了360天气,它的UI效果比较符合个人的审美,不想用它还是因为有广告。首页如图:首先分析一下页面结构,红色区域是Activity,绿色区域是一个TitleBar,黄色区域是Viewpage+Fragment,其中背景图和天气特效是在Activity中的。天气页天气页在Fragment中,包含了某个城市的相关天气信息,主要内容如下:1,实时天气实时天气实现了Titanic[3]效果,主要是重写TextView,通过给画笔设置BitmapShader实现波浪效果,然后通过属性动画改变shader的偏移量实现动态效果。2,预警信息预警信息是通过ViewFlipper实现向上翻页效果,主要是为了应对同时多个预警信息的情况。3,固定底部在Fragment页面没有滚动的情况下主要分为四个区域如下图:其中区域1在顶部,区域2和区域3是固定在底部的,因此就需要动态改变空置区域的高度,以适应各种屏幕尺寸。此处通过重写Linearlayout,测量出区域1,2,3的高度后再根据屏幕高度以及状态栏、标题栏的高度算出空置区域的高度,在摆放区域2时顶部加上空置区域的高度,来达到区域2、3固定底部的效果。4,逐小时逐小时天气是一个自定义view,绘制折线图、图标、文字等,然后配合HorizontalScrollView实现滚动效果,当然也可以直接使用Scroller来实现滚动效果。5,15天预报如上图,由于存在横向滚动,且除了中间的折线其他都是文字图标,所以,考虑使用RecyclerView+自定义View实现,相比直接自定义View,及不用处理滚动问题,也无需绘制那么多文字和图标。自定义中间View时需要给每个item传入当前及前后两条数据,绘制折线分两部分,当前中间位置跟前一条数据的连线,以及跟后一条的连线。也就是分别计算当前位置跟前后两条数据的平均值,绘制直线即可。需要注意的是绘制折线时需要设置线段画笔的线帽为:Cap.SQUARE,可防止折线陡峭时中间出现一丢丢断裂的问题。6,太阳和月亮太阳和月亮主要是通过自定义View实现,使用属性动画实现太阳和月亮的移动效果,(线条颜色比淡,图片压缩后效果不好)。背景+特效背景和特效是在外层Activity中,在城市切换时根据当前城市的天气显示不同的背景图和特效。背景就不说了就是个ImageView,根据不同天气展示不同图片即可。特效也是根据不同天气情况展示不同动画效果,那该如何实现呢?本来想着每个特效都自定义一个View,不同View切换,但是这样太麻烦了,不仅切换起来麻烦,每次新增特效都要修改调用处的代码,不符合开闭原则。最终决定通过自定义Drawable,切换时只需要给ImageView设置不同drawable即可,具体如何实现就不多说了,看代码就好了。目前实现了晴天,多云,小雨,中雨,大雨,雷雨等天气特效,效果如下:晴天多云雨||后面再加入下雪等特效。Widget+通知栏这个也没啥好说的,通知栏主要是通过自动前台服务实现,在前台服务中定时请求网络然后更新通知栏和Wieget。最后最后附上代码地址:https://github.com/wdsqjq/FengYunWeather[4]欢迎交流学习。参考资料[1]风云天气:
2021年10月8日

Retrofit 是如何支持协程的

作者:ganduwei来源:https://blog.csdn.net/ganduwei/article/details/118335325一、概述Kotlin的协程很好用,相信大家都用上了,也觉得很香,这不,Retrofit在最近的几个版本中就支持了协程,更加方便我们处理网络请求。这里不说协程的用法,我比较好奇Retrofit是怎么识别并处理我们写的suspend方法,下面就以retrofit:2.8.1的版本来看看究竟是如何实现的。二、java眼中的suspend在研究Retrofit代码之前,我们先看一个问题,kotlin完全兼容java,但suspend是kotlin中的,java中并没有,那这是怎么兼容的呢?为了看看究竟,我们可以把kotlin代码的字节码转成java代码,通过AndroidStudio可以很方便查看转换的java代码。但这里我们通过做一个小实验来一看究竟:定义一个kotlin类,里面包含一个suspend方法:class
2021年9月30日