xingfeng_coder
码龄8年
  • 525,739
    被访问
  • 120
    原创
  • 648,054
    排名
  • 283
    粉丝
关注
提问 私信

个人简介:路漫漫其修远兮,吾将上下而求索 Gitbook地址:https://xingfeng.gitbook.io/hust 简书地址:https://www.jianshu.com/u/57f41372c68e

  • 加入CSDN时间: 2014-08-12
博客简介:

xingfeng_coder的博客

博客描述:
学如逆水行舟,不进则退
查看详细资料
个人成就
  • 博客专家认证
  • 获得266次点赞
  • 内容获得121次评论
  • 获得531次收藏
创作历程
  • 2篇
    2020年
  • 39篇
    2019年
  • 15篇
    2018年
  • 47篇
    2017年
  • 18篇
    2016年
成就勋章
TA的专栏
  • OkHttp框架解析
    5篇
  • Android基础
    20篇
  • Android官方文档译文
  • 深入浅出Android
    4篇
  • Java集合库源码解析
    9篇
  • View总结
    4篇
  • Java并发库源码解析
    15篇
  • Volley框架解析
    4篇
  • Kotlin
    8篇
  • Android UI自动化测试
    1篇
  • EventBus框架解析
    5篇
  • Gradle
    2篇
  • Animation and Transition
    14篇
  • Android
    3篇
  • 工具
    1篇
  • 年终总结
    3篇
  • 从0到1实现Android路由
    6篇
  • NDK
    3篇
  • Flutter
    10篇
兴趣领域 设置
  • 数据结构与算法
    数据结构
  • 移动开发
    kotlinflutterandroid studio
  • Android
    gradleandroid jetpack
  • 软件工程
    性能优化
  • 职场和发展
    面试
  • 最近
  • 文章
  • 资源
  • 问答
  • 帖子
  • 视频
  • 课程
  • 关注/订阅/互动
  • 收藏
搜TA的内容
搜索 取消

闲话元注解@Retention

元注解@Retention元注解是用来描述注解的。@Retention用来描述注解将会在哪个层次存在,有三个值:RetentionPolicy.SOURCE:只会在java文件中存在,class文件中就不可见了。可以被编译器使用RetentionPolicy.CLASS:会在class中可见,不需要被虚拟机加载。编译时可见RetentionPolicy.RUNTIME:在class中可见...
原创
发布博客 2020.01.04 ·
560 阅读 ·
0 点赞 ·
0 评论

2019年年终总结

19年的感悟,两个词:分层以及学习。分层这个社会是分层的,只是每一层的界限不那么明了,但它确实就在那。软件开发这个行业也多是分层的,OSI七层模型,TCP/IP五层模型,都是分层的,所以分层的意义是什么呢?Android开发都会提到一个组件化、模块化的概念,其实也是分层,每层做自己的事情,相近的两层有沟通,职责分明,简单明了,这既是软件行业也是这个社会分层的意义吧。学习其实这个词总结...
原创
发布博客 2020.01.01 ·
274 阅读 ·
0 点赞 ·
1 评论

ArrayMap数据结构分析

ArrayMap是Android上特有的一个性能比较高的Map,和HashMap一样,也实现了Map接口。这里只分析其数据结构部分,不分析其高效缓存部分。分析ArrayMap的结构是int[] mHashes,记录每个key的hash值;Object[] mArray记录Key和Value,对于每一组Key和Value,按照Key和Value的顺序排列。put(K,V)时,首先根据K计算出...
原创
发布博客 2019.12.29 ·
1849 阅读 ·
1 点赞 ·
1 评论

1.8ConcurrentHashMap源码分析

ConcurrentHashMap是一个线程安全的HashMap,ConcurrentHashMap和HashMap的底层数据结构相同,都是数组+链表+红黑树;但是hash方法、键、值不允许为null和Hashtable一样,并且都是线程安全的,只不过实现同步的细节上有所差别。尽管支持高并发的读写,但是ConcurrentHashMap在读操作时不会加锁。关于HashMap和Hashtable...
原创
发布博客 2019.12.07 ·
347 阅读 ·
0 点赞 ·
0 评论

SparseArray源码分析

Android有一组自己的集合类,原因是使用java的集合太占内存。这里主要介绍下SparseXXX系列的容器。SparseArray将int映射成object,类似Map<Integer,Object>,但是由于不需要自动装箱,因此会更节约内存。另外,与HashMap的区别是,由于key是int的,因此其查找使用的是二分查询,而不是hashMap的哈希查询,因此SparseArr...
原创
发布博客 2019.11.13 ·
393 阅读 ·
1 点赞 ·
0 评论

Flutter状态管理(2)——单Stream和广播Stream

在Flutter状态管理(1)——InheritedWidget中介绍了状态管理以及如何使用InheritedWidget来实现全局状态的管理。这篇博客将介绍如何使用Stream来实现状态管理。Stream是一种流,在dart中用于异步产生数据,分为两种类型:单订阅Stream和广播Stream。单订阅Stream只允许在该Stream的整个生命周期内使用单个监听器,即使第一个subscript...
原创
发布博客 2019.09.20 ·
1695 阅读 ·
2 点赞 ·
1 评论

Flutter状态管理(1)——InheritedWidget

状态管理Flutter的状态管理分为两种:局部状态和全局状态。局部状态:根据官方的含义,就是一个StatefulWidget可以搞定的,比如BottomNavigationBar、PageView等等,其他Widget不需要知道你的状态,你也不需要依赖其他Widget的状态;setState可以实现状态的切换;全局状态:整个app很多页面都需要用到的状态,比如是否登录了,用户名、用户id等;...
原创
发布博客 2019.09.16 ·
1882 阅读 ·
0 点赞 ·
0 评论

Flutter数据传输

从上往下数据从根往下传数据,常规做法是一层层往下,当深度变大,数据的传输变的困难,flutter提供InheritedWidget用于子节点向祖先节点获取数据的机制,如下例子:class FrogColor extends InheritedWidget { const FrogColor({Key key, @required this.color, @required Widget c...
原创
发布博客 2019.09.12 ·
840 阅读 ·
0 点赞 ·
1 评论

Flutter版本玩Android客户端(7)——状态管理

在上一篇文章Flutter版本玩Android客户端(6)——登录注册模块以及文章收藏与取消中完成了登录模块,但遗留的问题是未进行状态同步,导致left drawer的状态没有变化。本文继续完善该部分,效果如下:状态管理对于登录状态这个值,很多widget需要用到,属于全局状态,这里使用provider进行管理。关于状态管理的更多知识,可以参考后面的文章。提供初始化状态在main入口处...
原创
发布博客 2019.09.11 ·
224 阅读 ·
0 点赞 ·
0 评论

Flutter版本玩Android客户端(6)——登录注册模块以及文章收藏与取消

本篇继上篇Flutter版本玩Android客户端(5)——微信公众号tab点击跳转后,完成了登录注册模块,以及文章收藏与取消。但仍有部分没有完成,比如登录状态的同步,drawer的header中没有因登录状态而改变。先看效果:登录注册玩Android登录后,会返回一个cookie,需要将该cookie保存,然后在一些post接口上带上该cookie表示用户信息,比如收藏、取消收藏都隐含...
原创
发布博客 2019.08.14 ·
769 阅读 ·
3 点赞 ·
0 评论

Flutter版本玩Android客户端(5)——微信公众号tab点击跳转

在Flutter版本玩Android客户端(4)——知识体系tab点击跳转中,完成了主页面知识体系tab的点击跳转,本文主要完成微信公众号tab的跳转。效果如下:微信tab的跳转微信tab的跳转后也是一个文章列表,复用ArticleList这个Widget。代码如下:class _WeChatArticleListWidgetState extends State<WeChatAr...
原创
发布博客 2019.08.12 ·
358 阅读 ·
0 点赞 ·
0 评论

Flutter版本玩Android客户端(4)——知识体系tab点击跳转

在Flutter版本玩Android(3)——文章详情页中完成了用webview加载文章详情页,本文趁热打铁,完成知识体系tab的跳转逻辑。和以往一样,先看效果:体系小item的跳转文章列表Widget的封装小item的跳转到一个文章列表,由于发现文章列表和首页可以公用,因此将其抽离出来,完成封装,如下:class ArticleListWidget extends Stateless...
原创
发布博客 2019.08.09 ·
296 阅读 ·
0 点赞 ·
0 评论

Flutter版本玩Android(3)——文章详情页

本文主要包含路由的跳转以及WebView显示文章详情页。效果如下:路由跳转Flutter通过Navigator类来进行页面路由的管理。push:指定跳转的widgetpushNamed:命名路由,string—>widgetpushXXX表示跳转到下一页面,pop表示跳出当前页面,可以携带参数跳转。具体可以参考路由管理。携带参数跳转Navigator.of(contex...
原创
发布博客 2019.08.07 ·
593 阅读 ·
0 点赞 ·
0 评论

跨平台开发的那些事

跨平台架构oc中,直接引用c、c++代码的需要命名为mm格式自己开发的framework是静态库;Android的.so是共享库os x中,.a表示静态库,.dylib表示动态库linux中,.a表示静态库,.so表示动态库windows中,.lib表示静态库,.dll表示动态库绿色表示库,黄色表示接口层,红色表示调用层CMakeCMake是一个开源的跨平台自动化构建系...
原创
发布博客 2019.08.05 ·
1178 阅读 ·
3 点赞 ·
0 评论

Flutter版本玩Android(2)——主页面数据获取

上一部分构造了主页面,这一部分主要完成主页面三个tab的数据获取,下一步的点击事件目前都未处理。先看下效果:使用的库这部分接入了几个三方库,分别是:网络库:Dio,这部分封装了一个单例出来,负责网络请求首页轮播图:BannerViewjson序列化:json-serializable,这部分需要注意如何生成辅助代码,可以参考后面的example首页下拉刷新、上拉加载:pull_t...
原创
发布博客 2019.08.04 ·
225 阅读 ·
2 点赞 ·
0 评论

Flutter版本玩Android客户端(1)——搭建主页面

最近在学Flutter,想着画点时间做个app,就做玩Android,可以利用现有的APi进行操作。第一步:搭建主页面,如下:主要包括几部分:AppBar,包含Drawaer,可以打开BottomNavigationBar:底部导航栏,切换时body内容变换图标第三个使用了三方图标,后面重点说下如何使用第三方Icon;如果使用Image作为Icon,那么点击的变色不会存在,而使用Ic...
原创
发布博客 2019.08.02 ·
382 阅读 ·
0 点赞 ·
0 评论

你应该了解的JNI知识(三)——注意点

native层打印logcat日志native层打印logcat日志,有两种方式:调用Java层的Log.i/v()之类的方法,可以参考你应该了解的JNI知识(二)——Java与JNI互相调用,里面介绍了如何在native层调用Java代码。使用liblog.so进行打印,和Log.i/v()底层使用同样的原理这里主要介绍如何使用第二种方法打印日志。主要包含三个步骤:cmake文...
原创
发布博客 2019.07.02 ·
204 阅读 ·
1 点赞 ·
0 评论

你应该了解的JNI知识(二)——Java与JNI互相调用

在你应该了解的JNI知识(一)——静态注册与动态注册中,了解了JNI是如何使用的,以及两种注册方式的使用以及区别。本篇博客将介绍Java和JNI的互相调用,因此主要包括两部分:JNI层调用Java层Java层调用JNI、Native层JNI层调用Java层JNI层调用Java层有点类似Java的反射机制,需要首先找到类、再找到某个方法或字段,再进行调用。这里涉及JNIEnv的几个方法...
原创
发布博客 2019.06.17 ·
561 阅读 ·
1 点赞 ·
0 评论

你应该了解的JNI知识(一)——静态注册与动态注册

最近一直在做native这边的跨平台开发,整个结构基本就是下图:大体说来就是,底层C/C++代码。那么对于两端分别有不同的处理:对于Android端而言,由于需要给Java端使用,因此需要提供JNI接口,然后将整个的代码打包编译成.so给Android端使用对于iOS端,由于oc是可以直接调用c的,但是需要将代码打包编译成iOS需要的Framework,然后由于需要给iOS端使用,...
原创
发布博客 2019.06.10 ·
469 阅读 ·
1 点赞 ·
0 评论

从0到1实现一个Android路由(6)——拦截请求再跳转

在从0到1实现一个Android路由(2)——URL解析器中,提到过请求拦截,其中有个常见的场景是某个页面是需要登录状态的,那么首先要调到登录页,完成了登录之后再跳转到路由页面,但通常登录页都是跳转到主页面的,这该怎么实现呢?上篇文章中没有解决这个问题,本文主要来解决这个问题。解决这个问题的核心是Hook,接管startActivity(),进行偷梁换柱。因为所有的跳转最终都是通过startAc...
原创
发布博客 2019.04.21 ·
1149 阅读 ·
1 点赞 ·
0 评论
加载更多