mrRuby
码龄6年
  • 47,129
    被访问
  • 63
    原创
  • 62,841
    排名
  • 12
    粉丝
关注
提问 私信
  • 加入CSDN时间: 2015-12-22
博客简介:

mrRuby的博客

查看详细资料
  • 3
    领奖
    总分 216 当月 8
个人成就
  • 获得11次点赞
  • 内容获得12次评论
  • 获得42次收藏
创作历程
  • 5篇
    2022年
  • 17篇
    2021年
  • 19篇
    2020年
  • 9篇
    2019年
  • 4篇
    2018年
  • 3篇
    2017年
  • 3篇
    2016年
  • 3篇
    2015年
成就勋章
TA的专栏
  • Flutter
    7篇
  • Android高级开发
    19篇
  • 行业动态
    2篇
  • 协程
    4篇
  • Android性能优化
    4篇
  • OkHttp
    3篇
  • 安全
    6篇
  • Volley
    4篇
  • 开发经验
    5篇
  • Java虚拟机
    3篇
  • 加解密
    1篇
  • Hybird
    1篇
  • EOS相关
    3篇
  • 最近
  • 文章
  • 资源
  • 问答
  • 帖子
  • 视频
  • 课程
  • 关注/订阅/互动
  • 收藏
搜TA的内容
搜索 取消

Flutter-网络请求封装

一、前言网络请求是我们App开发过程中的重要内容,大部分App都需要和服务器进行数据交互,因此在开发过程中,我们需要封装我们网络请求的代码,对request、response以及error做统一处理,减少业务开发中的样板代码。二、使用DIO进行网络通讯2.1 配置网络请求的基本信息关于dio的具体用法参考dio官方文档。按照下面方式配置diopackage:dependencies: dio: ^4.0.4在网络请求中,我们通常需要配置服务器的地址以及超时等,这里我们新建一个http_co
原创
发布博客 2022.01.24 ·
1958 阅读 ·
0 点赞 ·
0 评论

Flutter-JSON转Model以及json_serializable使用步骤

一、前言现在大多数接口返回的数据都是json格式,在面向对象的开发过程中,基本上都需要转换为Model模型,方便在开发中使用。在Android开发中json字符串转Model对象,可以使用Gson、FastJson等,但在Flutter中确没有这么方便。在Flutter中,提供了dart.convert以及json.dart来解析json字符串,但转换后Map对象,要转换为Model对象还需要进一步处理。二、JSON转Modle手动转换2.1 定义Model对象以及转换方法class Photo {
原创
发布博客 2022.01.18 ·
2747 阅读 ·
0 点赞 ·
0 评论

Flutter-了解Future及其用法

一、前言最近在做Flutter网络这块,涉及到耗时操作,显然要用异步编程。在其他语言,比如java、c++等,会使用多线程来实现。而在Dart语言中,它是单线程+事件循环的设计模式,其中主要使用Future来实现异步操作,为了快速的了解Flutter的异步编程,需要熟练Futter的概念以及用法。二、Future是什么同步编程中,立即返回执行的结果或者抛出异常;而异步编程中,返回的是将要完成的结果未来。Future代表异步执行的未来。var future = Future上述代码在执行过程中
原创
发布博客 2022.01.18 ·
1866 阅读 ·
0 点赞 ·
0 评论

Flutter-路由和导航

一、前言在Android开发中,界面的跳转使用的Context.startActivity来实现,界面通常指的Activity,如果我们的设计是单Activity+Fragment来实现,界面的跳转就需要使用FragmentManager来完成。这些概念到了Flutter中有了一些变化。二、路由是什么我们通常使用“屏”来展示应用的不同页面(界面)。比如应用有一屏展示商品列表,点击Item的时候,跳转到新的一“屏”展示商品的详细信息。在Flutter中,屏(screen) 和 页面(page) 都叫
原创
发布博客 2022.01.07 ·
1272 阅读 ·
0 点赞 ·
0 评论

Flutter-登录界面实战

一、前言前面了解了Flutter的适配原理级及适配方案,接下来我们进行一个实战,开发一个登录界面,效果图如下:二、代码实践2.1 LoginPage这里LoginPage使用StatefulWidget来实现:class LoginPage extends StatefulWidget { const LoginPage({Key? key}) : super(key: key); @override _LoginPageState createState() => _Log
原创
发布博客 2022.01.07 ·
1475 阅读 ·
0 点赞 ·
2 评论

Flutter-适配相关

一、前言做移动应用开发,各个系统都自己的适配方案,比如Android可以用dp、sp来描述大小,IOS使用pt来描述。但是入手Flutter后,却发现我们要描述的widget的大小没有单位,比如Container( width: 40, height: 40,),那么这个40到底是什么意思呢?px、dp或者dp,其实都不是。二、了解的Flutter的尺寸测试手机信息:720 * 1080 320dpi。运行以下测试代码void main(){ runApp(MaterialA
原创
发布博客 2021.12.31 ·
888 阅读 ·
0 点赞 ·
0 评论

Flutter - Hello world

一、概要Flutter发展已经逐步稳定,使用的人群和企业也越来越多,已经逐步得到了大家的认可。最近公司有一个项目,用户相对固定,因此打算使用Flutter来做一次实验,到底能不能做出我们能够接受的效果。二、环境搭建2.1 环境变量配置说明:以下全部操作均在Windows上。官网搭建说明:https://flutter.cn/docs/get-started/install初次使用建议参考一下。这里注意一点:为了正常升级和通过pub package 命令获取packages,需要设置两个环境变量
原创
发布博客 2021.12.31 ·
334 阅读 ·
0 点赞 ·
0 评论

储能系统扫盲

一、前言随着新政策的推出,要求相关的新能源发电站都需要配置相关比例的储能。同时增大了峰谷电价差比例,使得储能在用户侧也存的发展也存在一定的机遇。为了了解储能相关产业链,这里对新手做一个储能相关的知识点扫盲。二、专业名词解释任何一个行业都相关专业术语或者行话,这里描述一些储能系统中常用的名词。EPC: 工程总承包EMS: 能量管理系统PCS: 储能变流器BMS: 电池管理系统LFP: 磷酸铁锂三、储能场景3.1 发电侧位置: 集中式新能源电站旁功能: 1,减少弃用;2,平抑波动
原创
发布博客 2021.11.19 ·
405 阅读 ·
0 点赞 ·
0 评论

了解原码、反码、补码以及Java中byte的读写

一、前言平时的App应用层开发中,很少和byte打交道,最近刚做了一个和硬件设备交互的产品,通信使用UDP,交互协议就是自己定义的协议,每个数据包中分别定义不同的字节数来代表不同的意义,比如:字节号信息内容字节数码值说明1-2数据头20x3e80x3e83工作状态1bit0-bit70x00:待机;0x01:发射……………要了解这块内容,必须要了解二进。字节是二进制数据的单位,一个字节通常为8位长,其中位(bit)使用的0或1表示,通常
原创
发布博客 2021.11.05 ·
132 阅读 ·
1 点赞 ·
0 评论

产品经理之初体验

一、前言最近开发量不大,处于个人感兴趣,体验一次产品经理的角色,负责了一个产品。下面分享一下整个产品的设计流程。二、项目实践2.1 需求调研本次产品主要针对硬件的故障维护,考虑到后期的设备量以及人力成本,将硬件设备故障交由代维公司进行维护。设备的故障维护维修最终都需要派给指定人员,因此将整个系统定义为:工单系统,设备故障已单条工单的形式派给相应的维护人员。2.2 产品流程做产品设计,整个流程需要非常的清晰,对工单系统而言,需要考虑工单的来源以及处理流程,这里借助时序图来完成,如下所示:这里第
原创
发布博客 2021.10.13 ·
37 阅读 ·
0 点赞 ·
0 评论

数据流-使用入门

一、前言数据流以协程为基础构建,可提供多个值。概念上来讲,数据流可以通过异步方式(挂起函数中执行)进行计算处理一组数据系列(这个与协程挂起函数返回单个值相反),但要求所发出值的类型必须相同。例如,Flow是发出整数值的数据流。数据流包含是三个实体:提供方:会生产添加到数据流中的数据。得益于协程,数据流还可以异步生成数据。中介(可选):可以修改发送到数据流的值,或者修正数据流本身使用方:使用数据流中的值二、数据流使用2.1 创建数据流创建数据流,使用数据流构建器对应的API,目前有以下几
原创
发布博客 2021.10.12 ·
178 阅读 ·
0 点赞 ·
0 评论

协程-执行过程

一、前言在前面已经了解了协程的使用方法,为了能够更深入的了解协程的设计原理,那么我们来探究以下底层的实现原理。二、执行过程分析我们了解到,协程的创建和执行需要在CoroutineScope中,下面我们借助源码来分析CoroutineScope的执行过程。2.1 创建CoroutineScope对象 val scope = CoroutineScope(Job()+Dispatchers.IO)CoroutineScope的创建很简单,传入一个CoroutineContext。下面我们
原创
发布博客 2021.10.12 ·
40 阅读 ·
0 点赞 ·
0 评论

协程-在使用过程需要了解一些内容

前言通过前一篇协程-Android端使用场景入门,了解协程的一些使用场景,为了能更高效的使用协程,我们还需要了解知识,这样才能在使用过程中得心应手。为了能够更好的理解后面的内容,这里针对一些概念做统一的说明(1)协程层级划分CoroutineScope称为RootParent,同时也是parentCoroutineScope启动的协程称为RootParent的child,同时协程里面又可以启动协程,此时该层也叫parent协程可以看做一种层级结构,统一概念是为了后面提到child或者pare
原创
发布博客 2021.09.24 ·
59 阅读 ·
0 点赞 ·
0 评论

协程-Android端使用场景入门

前言我们在学习一些新技术的时候,首先会关注的他的应用场景以及一些使用有点,满足我们的需求后在项目中使用,然后再研究底层的实现原理及本质,在遇到问题的时候能够快速解决。因此对协程,我们的首要目标还是熟练使用。协程对于Java开发人员来说相对陌生,Java语言本身没协程概念。Kotlin从版本1.3中才引入进来的。官方解释协程一种并发设计模式,使用它来简化异步编程代码,用同步的编码方式实现异步的效果。下面通过一些示例来说明协程的使用。协程使用添加依赖项 // 添加kotlinx-coroutin
原创
发布博客 2021.09.23 ·
361 阅读 ·
2 点赞 ·
0 评论

性能优化-开发中的注意事项

一、前言性能优化是一个持续的过程,好比我们身体,不能等生大病了才明白健康的重要,平时我们就该注意锻炼身体,保证一个健康的身体状况。对程序而言也是如此,平时开发的就要注意性能方面的问题,不能等到后期出现体验不好的时候再进行优化。对硬件而言,我们开发的程序的影响在两个方面:CPU和内存。下面就从这两个方面入手分享一些在开发中应该注意的事项。二、内存针对JVM而言,内存的管理由虚拟机帮我们完成,GC在回收内存的过程中可能会暂停当前的所有线程,然后进行内存回收,这样就可能造成UI显示丢帧,出现卡顿,如果再频繁
原创
发布博客 2021.06.16 ·
45 阅读 ·
0 点赞 ·
0 评论

运用弹簧物理学原理为图形运动添加动画

一、前言Android系统已经给我们提供了属性动画,ValueAnimator以及ObjectAnimator,这两个动画效果已经满足我们开发中的大多应用场景,但是基于物理特性的动画用上述的两个动画效果就很难实现,但是官方也给我们提供了运用弹簧物理学原理的动画效果库dynamicanimation,让我们在开发中快速的使用。下面的这个效果就是实际项目中基于dynamicanimation来完成的.二、使用流程2.1 添加支持库implementation 'androidx.dynamicanim
原创
发布博客 2021.03.31 ·
136 阅读 ·
0 点赞 ·
0 评论

多指触摸处理

一.前言在开发中,我们经常会使用自定义View进行拖动和缩放,拖动一般是单指触摸,但是实际情况我们也可以使用多指进行触摸移动,如果这是我们进行抬起二.了解触摸事件2.1 了解MotionEvent中手指的index和id在MotionEvent中,存储了每个手指的index和id:Index: 每个MotionEvent在数组中存储了手指的信息,index表示手指在数组中的位置,开发中我们也是通过index作为参数来获取相关信息,比如event.getX(int pointerIndex),ev
原创
发布博客 2021.03.12 ·
161 阅读 ·
0 点赞 ·
0 评论

WebView拦截线上资源,加载离线资源

一、前言最近的项目开发中接入了一些网页功能,Webview加载完成大约需要10秒左右,经过使用Charles抓包分析,发现在加载过程中出现了几个比较大的js和css文件,这些文件在没有压缩之前有15M左右,发布线上压缩有也有3M左右,这些资源严重影响了webview的加载速度,同时也带来了不好的体验。在极致情况下,web端应该去做这些优化处理,但在项目赶时间的情况下,客户端在做了这些大文件资源做了离线处理,让webview加载这些的时候从本地加载。二、Webview拦截资源2.1获取需要拦截的资源/
原创
发布博客 2021.01.31 ·
359 阅读 ·
0 点赞 ·
0 评论

属性动画技能实践

前言通过 属性动画原理解析,我们了解属性动画的整个运行机制,对底层的原理有了一定的了解,也学习一些知识点,但是学习过的知识点在没有自己实践都是别人的,只有自己实践后才属于自己的。接下来分享一些属性动画的一些知识点运用项目中的经历。实践实践一:屏幕刷新机制我们知道属性动画基于屏幕刷新回调机制来实时更改属性的值,而在实际的项目应用用,也会很多实时刷新屏幕的需求,接下来我们通过秒表计时器需求来分析刷新机制在实际应用。秒表计时器的效果图如下所示:[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下
原创
发布博客 2021.01.19 ·
42 阅读 ·
0 点赞 ·
0 评论

属性动画原理解析

前言属性动画作为现在开发中常用的动画,我们需要对他有比较详细的了解,才能够在开发中随心和高效的使用。在了解属性动画之前我们先了解Android前期的视图动画一、视图动画视图动画是为View对象添加动画效果的功能,如果想为非对象动画添加效果,则必须自己实现自己的代码才能做到。视图动画仅公开 对象的部分方面来供您添加动画效果,比如旋转、错放、移动视图动画只是在绘制视图的位置进行修改,而不会修改实际的视图本身。例如,为某个按钮添加了移动动画,该按钮会正确绘制,但能够点击按钮的实际位置并回修更改,我们必须
原创
发布博客 2021.01.15 ·
233 阅读 ·
0 点赞 ·
1 评论
加载更多