本篇博客将详细介绍如何使用 Spring Boot 和 Android 实现一个完整的登录功能,从后端 API 的构建到 Android 端的交互,旨在为读者提供一套完整的解决方案。1....Retrofit 依赖引入在 Android 项目的 build.gradle 文件中添加 Retrofit 及其相关依赖:implementation 'com.squareup.retrofit2:...4.1 使用 Retrofit 进行网络请求Retrofit 是 Android 平台上广泛使用的网络请求库。首先,我们定义一个接口用于请求登录 API。...如果登录成功,我们将获取到服务器返回的 JWT 并将其存储在 SharedPreferences 中,以便在后续的请求中使用该 Token 进行身份验证。...客户端在检测到 Token 过期时,应提示用户重新登录。6.4 防止暴力破解为了防止恶意用户通过暴力破解获取用户密码,建议在登录接口上增加防护机制,如使用验证码,或在多次登录失败后暂时锁定用户账号。
第十四章 使用Kotlin开发Android程序 正式上架:《Kotlin极简教程》Official on shelves: Kotlin Programming minimalist tutorial...", Toast.LENGTH_SHORT).show() } } } 当然实现的代码就非常简单啦,只是可能我们在刚开始接触这门语言的时候有一些的不理解。...Model -- 主要处理业务,用于数据的获取(如网络、本地缓存)。 View -- 用于把数据展示,并且提供交互。...Dagger2 项目中,主要进行presenter、model、retrofit Api等类的注入操作。...依赖于: 1.ApiModule(提供okhttpClient、Retrofit、Api等) 2.AppModule(提供context对象(okhttp拦截器所需)) FuckGoodsComponent
本项目包含以下知识点: MVP架构思想 Retrofit RESTful API 框架的配合 RxJava 响应式编程 Butter Knife:通过注解绑定 View 夜间模式切换 效果图: ?...在实际项目中的应用,MVP中RxJava生命周期的管理…; 上述罗列的各种开源框架的使用方法; Java8 Lambda表达式和Stream API的用法; 怎样适配Material Design; ToolBar...使用RecyclerView实现下拉刷新、上拉加载、侧滑删除、长按拖曳 支持主题设置 包含搜索、收藏、历史等功能 效果图: ?...热门搜索推荐 搜索历史记录 自定义主题颜色 无缝切换日夜皮肤 视频播放 内置3款 logo 随意互换 动态切换字体大小 主要技术点: 基本遵循 Material Design 设计风格 抓包获取今日头条...主要技术点: 整体项目MVP结构 Dagger2 相机部分,API >= 21使用 Camera2 ,API 使用 Camera 相机的状态机,聚焦状态机 照片缓存分为两种,一个是大图,一个是小图
零、前言 本系列为了总结一下手上的知识,致敬我的2018 本篇的重点在于:后端数据在移动端的展现 本篇总结的技术点: 材料设计串烧、Retrofit+RxJava访问请求、Retrofit提交表单...、Retrofit缓存的实现(简)、 搜索功能的实现、MVP模式的思考、单元测试(简)、 App的混淆打包、将App上传到服务器,提供下载地址、 ---- 一、材料设计的综合使用: 1.布局概览...,有兴趣的看源码吧 有关材料设计,我写过一个系列:详见--Android材料设计Material Design 开篇前言 3.1:BottomNavigationBar的使用: 为了方便起见,我写了一个...,通过Callback回调在控制层(P)使用 控制层(P)注意进行模型层(M)和视图层(V)的粘合,通过逻辑进行不同的视图展现 也就是说我在写P的实现类中,管你MV怎么实现的么,你家老子(M,V的接口)...在我手上,我还怕什么 在写视图层(V)时,V手里也有控制层的老子(P的接口),所以V也是怎么想的 所以无论写视图层,数据层,控制层,只要把接口定义好,便可以分工去写,互不影响 这也就是面相接口编程的有点
目前支持Android项目中的资产目录文件和UI布局转换,以及部分外部库的转换。有了这个神器,以后一个人就可以轻松搞定两个平台了,真是爽歪歪啊。。。。我根本不需要学习iOS了。。。...image 使用普通键盘的EditText的屏幕截图: ? image 带电话拨号键盘的EditText的屏幕截图: ?...针对.9.png图片文件:在catalog中为asset添加了切片(slicing )信息。 Vector图片形式的xml被转换成Storyboard上能够使用的.pdf文件。...---- 外部库Glide的转换 支持的功能: 从本地res文件夹加载drawable 从URL加载图片 将图片加载到UIImageView 在下载过程中提供占位符图片 在图片之间应用过渡:CrossFade...image ---- 计算器App 这是一个移植的计算器项目。 使用截图如下,还是挺酷选的呢,效果保持一致,操作也很流畅: ? image 最后附上官网地址,有兴趣的可以去看看。
下面我用对比的方式来介绍 Retrofit 的 RxJava 版 API 和传统版本的区别。 以获取一个 MovieEntity 对象的接口作为例子。...无法被 JVM 回收导致内存泄露。...RxPermission RxPermission是基于RxJava开发的用于帮助在Android 6.0中处理运行时权限检测的框架。在Android 6.0中,系统新增了部分权限的运行时动态获取。...总结 简而言之Rxjava是一个很牛逼的库,如果你的项目中还没有使用RxJava的话,建议可以尝试去集成使用;对大多数人而已RxJava是一个比较难上手的库了,不亚于Dagger的上手难度;不过当你认识学习使用过了...,你就会发现RxJava的魅力所在;如果看一遍没有看懂的童鞋,建议多看几次;动手写写代码,我想信本文可以给到你们一些帮助;你们真正的体会到什么是 从入门到放弃再到不离不弃 ;这就是RxJava的魅力所在
1 android2.2(API level 8)和更早的版本,垃圾回收时,会阻塞UI线程,造成卡顿。...而2.3(API level 9)开始增加了并行的垃圾回收机制,可以让应用得到更好的体验。...从android3.0(API level 11)到android7.1(API level 25),bitmap对象及其像素数据都存储在虚拟机的堆里。...从android8.0(API level 26)开始,bitmap对象存储在虚拟机的堆里,而对应的像素数据存储在native堆里。...8.双从校验锁单例 9.项目中遇见的问题 二、xm Hanlder机制 ThreadLocal原理 retrofit动态代理 zxing原理 线程池的使用 mvvm和mvp的区别 如何监听生命周期变化
CacheStrategy缓存策略类,通过工厂模式获取 ConnectionInterceptor(建议重点阅读源码) 建立链接,使用之前创建好的StreamAllocation,初始化httpcodec...内部使用了类似gc标记清理算法,对无用的connection进行标记,StramAlloction渐渐变成0,线程池检测并回收,保证多个健康的keep-alive链接 CallServerInterceptor...在服务端返回数据之后,OkHttp将原始的结果交给Retrofit,Retrofit根据用户的需求对结果进行解析。...静态 动态 在程序运行时创建的代理方式 无侵入增强 jdk动态代理 vs cglib jdk动态代理 只能为接口动态 InvocationHandler必须要实现 invoke的参数中获取参数 invoke...操作+微信对接 Hybrid 开发与Flutter:Html5项目实战+Flutter进阶 知识梳理完之后,就需要进行查漏补缺,所以针对这些知识点,我手头上也准备了不少的电子书和笔记,这些笔记将各个知识点进行了完美的总结
/details/51597816) 文章介绍了怎么使用Retrofit,并且在遇到okhttps的使用方式,但对于加密我们还是无法了解太多,对于安全性要求很高的接口场景还是无法满足,今天就来介绍下对普通...Api加固除了本身支持Https,还会额外进行上图中一系列的加密策略,自定义对Resquest/Response Data进行加密,对url加密,甚至对request进行校验等。...加固API主要由四种方案: 使用Https URL加密 参数加密 加入权限 时效验证 数字签名 Https 以前写过一篇文章可以参考 :Retrofit 2.0 超能实践(一),完美支持加密Https传输...遇到三方恶意攻击,服务端确定并客户端发来的权限并不是我们固定的角色,那么服务端也将视这次请求为无效的。 时效验证 时效验证一般是用来校验API是否过期,业内常用来做订单是否重复的依据之一。...在客户端api加固中,常用上面这几种综合来实现,做到万无一失,从数据源的加密,到传输过程中加密,到数据源获取到权限的校验,整个过程都是做了防御的,如过需要给第三方提供接口认证, 可以使用授权,类似微信提供给你的三方登录一样
举个例子,某个Service需要定时从服务器获取最新数据:通过一个定时器每隔指定的N分钟让定时器启动Service去获取服务端的最新数据。...retrofit使用 1.在retrofit中通过一个接口作为http请求的api接口 public interface NetApi { @GET("repos/{owner}/{repo}/...(); 3.调用api接口 NetApi repo = retrofit.create(NetApi.class); //第三步:调用网络请求的接口获取网络请求 retrofit2.Call在项目选型的时候可以使用Google的Gson和阿里巴巴的FastJson两种并行使用,如果只是功能要求,没有性能要求,可以使用google的Gson,如果有性能上面的要求可以使用...在垃圾回收时,eden 空间中的存活对象会被复制到未使用的 survivor 空间中 (假设是 to),正在使用的 survivor 空间 (假设是 from) 中的年轻对象也会被复制到 to 空间中
前言 我之前写过百度的语音识别,也写过讯飞的语音识别与合成,而有读者看完后说没有百度的语音合成,想在用百度语音识别的同时使用百度的语音合成。...这里选择包名,如果你选择不需要,则只能通过网络API来实现你的语音合成,而选择Android的话就不光可以使用API还能使用SDK,不过这样的话对APK的大小会有增加。 ?...这里我选择的是Android,因此需要建一个Android项目。 一、创建项目 ? 先把这个com.llw.speechsynthesis包名填进去。 ? 立即创建 ?...这里面的五个值都需要进行修改,前三个值是我们在创建平台应用时生成的,我当时说了你要记下来,就是为了这里使用。...音频文件下载 因为这里返回的是一个音频文件,因此不能使用常规的方式来处理,下载当然是下载的项目的缓存目录里面去,当前我在Android10.0上是可以实践的,Android11.0可能要进行分区存储才行
功能介绍 2.1 需求场景 对于 EditText来说,一般的需求有: 方便用户因出现输入错误而进行2次输入 标识用户正在填写项 根据具体场景增加一定的UI元素 2.2 功能需求 根据需求场景,得出EditText...特点 对比市面上EditText控件,该控件Super_EditText 的特点是: 3.1 功能实用 一键删除功能 在需求中非常常见,现将其封装后更加方便使用 可自定义样式程度高(比自带的强大 & 方便...),不复杂却能满足一般的EditText使用需求 可自定义样式如下:(注:该样式的设置是系统自带的 API 所不具备的) ?...3.2 使用简单 仅需要简单的xml属性配置 具体请看文章:Android自定义View:你需要一款简单实用的SuperEditText(一键删除&自定义样式) 3.3 二次开发成本低 本项目已在 Github...4.2 选中样式 描述:通过增加UI元素 & 交互样式表示用户正在填写的项目 需求场景:标识用户正在填写项 样式说明 ? 原型图 ? 属性说明 ? ?
Android使用RxJava+Retrofit2+Okhttp+MVP练习的APP 项目截图 这是我的目录结构 五步使用RxJava+Retrofit2+Okhttp+RxCache 第一步:导包...OkHttpClient mOkHttpClient; /** * 获取Retrofit对象 * * @return */ protected...API数据 * observableCahce获取缓存数据 * new EvictDynamicKey(false) false使用缓存 true 加载数据不使用缓存 */ public class...一个逻辑模型可以对于多种视图模型 使用MVC的目的是将M和V的实现代码分离,方便扩展,便于以后的管理 从开发者的角度,MVC把应用程序的逻辑层与界面是完全分开的,最大的好处是:界面设计人员可以直接参与到界面开发...Android中也可以说采用了当前比较流行的MVC框架,在Android中: 1) 视图层(View):一般采用XML文件进行界面的描述,使用的时候可以非常方便的引入,但是用xml编写了,又需要在
1.3 调整不稳定版本的解析策略 在默认情况下, Gradle 会按照 24 小时缓存有效期缓存动态版本和变化版本的解析结果,在缓存有效期间,Gradle 不会检查远程仓库来获取最新的依赖项。...其实,如果我们结合实践中暴露的问题,Gradle 的依赖冲突可以细分为 2 类问题: Version Conflict 版本冲突: 在项目依赖关系图中,某个依赖项存在多个版本; Implementation...conflict 实现冲突: 在项目依赖关系图中,多个依赖项存在相同实现。...虽然 Gradle 在平台层提供了一套依赖解析决议机制,但 Gradle 版本决议的默认规则是选择的最高版本,最高版本不一定与项目兼容,所以开发者有时候要使用版本决议规则 API 来配置和干预 Gradle...如果不存在满足约束规则的依赖项版本,则会抛出构建失败错误; 3、虽然 Gradle 在平台层提供了一套依赖解析决议机制,但 Gradle 版本决议的默认规则是选择的最高版本,最高版本不一定与项目兼容,所以需要开发者使用相关版本决议规则
举个例子,某个Service需要定时从服务器获取最新数据:通过一个定时器每隔指定的N分钟让定时器启动Service去获取服务端的最新数据。...retrofit使用 1.在retrofit中通过一个接口作为http请求的api接口 public interface NetApi { @GET("repos/{owner}/{repo}/...(); 3.调用api接口 NetApi repo = retrofit.create(NetApi.class); //第三步:调用网络请求的接口获取网络请求 retrofit2.Call回收。 可达性分析算法:以根集对象为起始点进行搜索,如果对象不可达的话就是垃圾对象。...在垃圾回收时,eden 空间中的存活对象会被复制到未使用的 survivor 空间中 (假设是 to),正在使用的 survivor 空间 (假设是 from) 中的年轻对象也会被复制到 to 空间中
海康威视 吸取了之前面试失败的教训,所以又让同学 B 给我内推了海康威视,正好也在招 Android 开发。...自我介绍,公司产品介绍,负责哪一块; 写博客的意义,为什么开始写博客,还问了“简书程序员优秀作者”这个 title 怎么搞到的,哈哈哈; Kotlin 和 Java 相比,有哪些优点,有没有在实际项目中使用...有赞 有赞这家公司也是我在 BOSS 上投的(真的没有打广告),投完之后,两三天内一点消息都没有,我以为是看不上我了。结果之后发短信给我说需要电话面试我,那就来吧来吧,没啥好虚的。...第一轮电话面试 项目介绍,自己负责哪些内容; 安卓安全方面了解过吗,反编译、加壳之类的; MVC 、MVP 和 MVVM 三种架构的区别和优点; Retrofit框架的原理,感觉这个每次都会被问到。。。...的相同和不同点,在 item 回收上有什么不同; View 事件分发机制; 说说 apk 打包流程; 有没有做过 apk 多渠道打包; Android 组件化的原理,还有一些组件化平时使用的问题; Binder
但是我们在项目中使用的时候仍然需要自己在做一层封装,这样才能使用的更加的顺手。...IO 和 NIO这两个都是Java中的概念,如果我从硬盘读取数据,第一种方式就是程序一直等,数据读完后才能继续操作这种是最简单的也叫阻塞式IO,还有一种是你读你的,程序接着往下执行,等数据处理完你再来通知我...默认使用OkHttp,性能上也要比Volley占优势,再有如果你的项目如果采用了RxJava ,那更该使用 Retrofit 。...所以这两个库相比,Retrofit更有优势,在能掌握两个框架的前提下该优先使用 Retrofit。...但是Retrofit门槛要比Volley稍高些,要理解他的原理,各种用法,想彻底搞明白还是需要花些功夫的,如果你对它一知半解,那还是建议在商业项目使用Volley吧。
Android使用RxJava+Retrofit2+Okhttp+MVP练习的APP 项目截图 这是我的目录结构 五步使用RxJava+Retrofit2+Okhttp+RxCache...OkHttpClient mOkHttpClient; /** * 获取Retrofit对象 * * @return */ protected...API数据 * observableCahce获取缓存数据 * new EvictDynamicKey(false) false使用缓存 true 加载数据不使用缓存 */ public class...一个逻辑模型可以对于多种视图模型 使用MVC的目的是将M和V的实现代码分离,方便扩展,便于以后的管理 从开发者的角度,MVC把应用程序的逻辑层与界面是完全分开的,最大的好处是:界面设计人员可以直接参与到界面开发...Android中也可以说采用了当前比较流行的MVC框架,在Android中: 1) 视图层(View):一般采用XML文件进行界面的描述,使用的时候可以非常方便的引入,但是用xml编写了,又需要在
,所以不会因为图片加载而导致oom, 同时也减少垃圾回收器频繁调用回收Bitmap导致的界面卡顿,性能更高. ② 渐进式加载JPEG图片, 支持图片从模糊到清晰加载 ③ 图片可以以任意的中心点显示在ImageView...,一旦这个框架出现问题,那么对项目来说影响非常大的 OKhttp Android开发中是可以直接使用现成的api进行网络请求的。...但是我们在项目中使用的时候仍然需要自己在做一层封装,这样才能使用的更加的顺手。...默认使用OkHttp,性能上也要比Volley占优势,再有如果你的项目如果采用了RxJava ,那更该使用 Retrofit 。...但是Retrofit门槛要比Volley稍高些,要理解他的原理,各种用法,想彻底搞明白还是需要花些功夫的,如果你对它一知半解,那还是建议在商业项目使用Volley吧。 18.熟悉哪些设计模式?
在写这篇文章之前,我纠结了很久,本篇到底属于app安全系列,还是属于Retrofit系列,最终我还是选择了将本篇文章归类到Retrofit下。.../sk719887916/article/details/51597816),那篇文章介绍了怎么使用Retrofit,并且在遇到okhttps的使用方式,但对于加密我们还是无法了解太多,对于安全性要求很高的接口场景还是无法满足...加固API主要由以下方案: 使用Https URL加密 参数加密 加入权限 时效验证 数字签名 ?...解密过程也直接使用map操作符转换后返回给业务层。 HTTPS 以前写过一篇文章可以参考 :Retrofit 2.0 超能实践(一),完美支持加密Https传输,怎么让自己api加入SSL认证。...在客户端api加固中,常用上面这几种综合来实现,做到万无一失,从数据源的加密,到传输过程中加密,到数据源获取到权限的校验,整个过程都是做了防御的,这种思维我们可以参考:OAuth 工作原理,那么很多时候我们也要对服务端返回的数据进行校验