Retrofit 原理简析
简介 Retrofit 所做的事情简单来说就是将你的 Http 业务 API --> Http 请求实现,类似于 Spring MVC 中的 Controller,它的主要任务是解析你的业务接口,从接口上获取你的 Http 接口协议,然后组装 Http 请求,进行异步 Request。 Retrofit 整合了多个组件,包括 JSON/XML 的 ORM...
View ArticleReact Native入门(四)之使用Flexbox布局
前言 flex,收缩,弹性的意思。 弹性(Flex)宽高 关于RN中宽高的设置,我们在上一篇设置Image加载网络图片的时候提到过,首先width和height是两个属性,用来指定一个组件的宽高,使用的时候可以这样: <Image source={pic} style={{width: 200, height: 200}} /> 也可以在外边定义,之后再引用,这个就不多说了!...
View ArticleFlutter学习之旅----环境搭建与Hello World
Flutter官网镇楼 Flutter来自Google,是移动端APP开发SDK,使用Dart语言编写一套代码即可同时在Android和iOS平台运行,性能无限接近原生,支持android 4.1以上 和...
View ArticleAndroid源码解析四大组件系列(五)---广播的注册过程
广播这个篇幅打算用四篇文章来写,分别为广播注册、广播处理、广播的发送,广播深入细节理解,如果都写到一篇文章会比较长,所以拆分成四篇来写。 第一篇 Android源码解析—广播的注册过程 第二篇 Android源码解析—广播的处理过程 第三篇 Android源码解析—广播的发送过程 第四篇 Android源码解析—广播深入细节理解...
View Article编程学习应用 Growth 发布 3.0,在碎片时间里练习
Growth 1.0~2.0 已经有 2101 次提交,而 Growth 3.0 则已经拥有了 900+ 提交。这意味着 Growth 整个项目有多达 3000 次提交,感谢每一个为 Growth 项目作为贡献的开源先锋。 特别感谢:@travelgeezer 为 Growth 3.0 编写了大量的功能。 现在,让我来开启装逼模式。 使用 React Native 重写,性能提升了 N + 1 倍...
View Article轻松学,细说 Dagger2 中容易让人迷惑的问题
Dagger2 确实比较难学,我想每个开发者学习的时候总是经历了一番痛苦的挣扎过程,于是就有了所谓的从入门到放弃之类的玩笑,当然不排除基础好的同学能够一眼看穿。本文的目的尝试用比较容易理解的角度去解释 Dagger2 这样东西。 Dagger2 是有门槛的,这样不同水平能力的开发者去学习这一块的时候,感受到的压力是不一样的。 我个人总结了大家在学习 Dagger2...
View Article使用UDP方式 与iOS端App通讯
首先需要安装一个TCP&UDP测试工具 连接类型选择UDP 目标IP 设置手机的IP, 端口8888 (这个端口在App端用来绑定) 指定端口, 是App向回发信息所需要的端口, 具体设置如下图所示 接下来为减少代码的键入, 我直接使用CocoaAsyncSocket这个三方库,作为中间媒介完成整个过程 { GCDAsyncUdpSocket *udpSocket; //...
View ArticleKotlin学习之-6.4 Coroutines
Kotlin学习之-6.4 Coroutines 在Kotlin V1.1中Coroutines 还处在实验阶段 有些接口会做一些耗时的操作例如网络IO请求,文件IO, CPU或者GUP密集的工作等,并且要求调用者阻塞知道操作完成。Coroutines提供了一种能够替换避免阻塞线程的方法并且代价更小、控制性更好的操作:suspension of a coroutine...
View Articlereact-native城市列表组件
城市列表选择是很多app共有的功能,比如典型的美图app。那么对于React Native怎么实现呢? 要实现上面的效果,首先需要对界面的组成简单分析,界面的数据主要由当前城市,历史访问城市和热门城市组成,所以我们在提供Json数据的时候就需要将数据分为至少3部分。 const ALL_CITY_LIST = DATA_JSON.allCityList; const HOT_CITY_LIST =...
View ArticleSwift3.0基础之详细讲解Closure闭包结构的使用
源码Demo写的很详细,这里不再赘述,如下://创建一个全局的Closure,这是最后应该看的知识点 //方式一:定义一个闭包变量其实就是定义一个特定函数类型的变量,方式如下。因为Closure变量没有赋初始值,所以我们把其声明为可选类型的变量。在使用时,用!强制打开即可。 var globalCloure1:((Int, Int) -> Int)?...
View ArticleAndroid WebView简要介绍和学习计划
我们通常会在App的UI中嵌入WebView,用来实现某些功能的动态更新。在4.4版本之前,Android WebView基于WebKit实现。不过,在4.4版本之后,Android WebView就换成基于Chromium的实现了。基于Chromium实现,使得WebView可以更快更流畅地显示网页。本文接下来就介绍Android...
View ArticleAndroid WebView加载Chromium动态库的过程分析
Chromium动态库的体积比较大,有27M左右,其中程序段和数据段分别占据25.65M和1.35M。如果按照通常方式加载Chromium动态库,那么当有N个正在运行的App使用WebView时,系统需要为Chromium动态库分配的内存为(25.65 + N x...
View ArticleAndroid WebView执行GPU命令的过程分析
Android WebView使用的Chromium引擎,虽然没有自己的GPU进程或者线程,但是却可以执行GPU命令。原来,Android WebView会给它提供一个In-Process Command Buffer GL接口。通过这个接口,Chromium引擎就可以将GPU命令提交给App的Render Thread执行。本文接下来就详细分析Android...
View ArticleAndroid WebView硬件加速渲染网页UI的过程分析
Android WebView作为App UI的一部分,当App UI以硬件加速方式渲染时,它也是以硬件加速方式渲染的。Android WebView的UI来自于网页,是通过Chromium渲染的。Chromium渲染网页UI的机制与Android App渲染UI的机制是不一样的。不过,它们会一起协作完成网页UI的渲染。本文接下来就详细分析Android...
View Article自定义收集用户行为统计库 (非常方便 可以自己拓展)
EventCollect 这是收集用户行为统计的代码 reademe: 需求:: 现在App端需要写一个咱们自己的统计控件。 要求: 可以监控用户的所有行为,例如用户谁(没有登录的情况使用UUID), 进入那个页面,进入的时间,在这个页面操作了什么(点击了那个按钮,或者是点击了列表那个列), 离开页面时间,以及其他统计信息,例如版本号,手机系统版本,用户当前网络,用户位置,用户单次使用App时长等...
View ArticleAndroid响应式UI教程
原文:Responsive UI Tutorial for Android 作者:James Nocentini 译者:kmyhy 2017/5/4 更新说明: 由 James Nocentini 更新到 Android Studio 2.2.3。原文作者也是 James。 Android 运行的设备十分广泛,它们的屏幕尺寸和分辨率都不一样。因此,Android app...
View ArticleAndroid 自定义view之 Xfermode 制作动态文字加载动画
对于Xfermode 可能很多人看了一些就放弃了,今天我就个人理解,举简单的我们生活中的例子,让大家更容易理解这是个什么东西。其实并不是你们想象的那么难,你只要懂三步就够了。先来看一看这次的效果图,这个gif大家凑合看。 不要把Xfermode 想的这么难,我把Xfermode 理解成中学时 学的“集合” ,我们知道“集合”是处理 数据的。例如: 集合...
View Article