作者: Nate Robinson(ArcBlock 团队移动开发工程师)

5 天后,ArcBlock 第三场、中国的第一场内测版黑客马拉松即将在北京举行,截至本文推送之际,已有 56 人报名,剩余名额 4 个。ArcBlock 研发副总裁陈天、OCAP 项目负责人丁沛灵已经从西雅图飞来北京,恭候各位黑客大驾光临。

每场黑客松,我们都会提供越来越完善丰富的 SDK、工具和文档,帮助开发者能在 ArcBlock 平台开发更多更好的应用。今天,我们请 ArcBlock 团队移动开发工程师 Nate Robinson 介绍如何玩转  OCAP Android SDK。

前面想必大家已经看到了 iOS 的简易集成攻略,估计 Android 的小伙伴们已经坐不住了,今天就在前几篇的基础上再给大家讲解一下 ArcBlock Android SDK 的快速集成。文章整体的思路同 iOS,会以如何使用 ArcBlock Android SDK 开发一款简单的 App 作为整篇文章的主线,那么让我们开始吧!

1. 阅读详细的 ArcBlock Android SDK 入门文档

详细的 ArcBlock Android SDK 入门文档 建议点开链接通读一遍,文档里面对整个 SDK 的使用做了详细的说明,看完之后再回来看下面的入门文档概括会有一个更清晰的理解。

入门文档概括:

  1. 正确配置 maven,引入 Library

  2. 下载 schema.json,编写 .graphql 文件,并配置好文件目录

  3. 普通数据查询

  • CoreKitBeanMapper 初始化

  • Query 初始化

  • CoreKitViewModel 初始化与数据获取的监听事件设置

  • 分页数据查询

    • CoreKitPagedHelper 初始化

    • CoreKitBeanMapper 初始化

    • CoreKitPagedViewModel 初始化与数据获取监听事件的设置

  • 订阅数据与监听

    • 打开对应的 ABCoreKitClient 的 Socket 开关

    • Subscription 初始化

    • CoreKitSubViewModel 初始化与数据获取监听实践设置

    另外可能需要额外注意一下的是 CustomType 和 ABCoreKitClient 初始化,这些可以在 ArcBlock Android SDK 入门文档 - 其他配置 找到详细的说明和代码示例。

    2. 基于 ArcBlock Android SDK 开发 App 的例子

    首先,我们先看看最终要完成 App 的样子,整体功能并不复杂,分页查询区块,并以一个个正方形方块代表一个个发生的交易,方块颜色的深浅由交易的大小决定,点击某个方块进入到交易详情界面,点击查看更多跳转到区块交易分页查看界面:

    整个 App 用到了三个数据查询:

    • 区块分页查询

    • 区块交易分页查询

    • 区块交易详情查询

    上面三个查询语句保存在 PlayBook,感兴趣的话可以打开探索一番

    完整项目代码

    直接 clone 仓库到本地即可运行,下面是具体的代码讲解。

    2.1 首页区块分页界面

    在 MainActivity.java 的 initData() 方法中实现了区块查询的核心逻辑,重点看一下下面代码:

    mBlocksByHeightQueryViewModel.getCleanQueryData().observe(this, new Observer<CoreKitPagedBean<List<BlocksByHeightQuery.Datum>>>() {@Overridepublic void onChanged(@Nullable CoreKitPagedBean<List<BlocksByHeightQuery.Datum>> coreKitPagedBean) {//1. handle return dataif (coreKitPagedBean.getStatus() == CoreKitBean.SUCCESS_CODE) {if (coreKitPagedBean.getData() != null) {// new a old listList<BlocksByHeightQuery.Datum> oldList = new ArrayList<>();oldList.addAll(mBlocks);// set mBlocks with new datamBlocks = coreKitPagedBean.getData();DiffUtil.DiffResult result = DiffUtil.calculateDiff(new CoreKitDiffUtil<>(oldList, mBlocks), true);// need this line , otherwise the update will have no effectmListBlocksAdapter.setNewListData(mBlocks);result.dispatchUpdatesTo(mListBlocksAdapter);refreshNextAndPre();}}//2. view status change and loadMore component needif (coreKitPagedHelper.isHasMore()) {mListBlocksAdapter.setEnableLoadMore(true);mListBlocksAdapter.loadMoreComplete();} else {mListBlocksAdapter.loadMoreEnd();}}});

    由于我们在初始化 ABCoreKitClient 的时候,设置的 ResponseFetcher 为 ApolloResponseFetchers.CACHE_AND_NETWORK ,所以这边其实每次 query 会走两遍回调事件,为了高效的去重与页面刷新,这边使用的是 Android 自带的 DiffUtil。

    2.2 区块交易分页界面

    具体代码在 BlockTxsActivity.java 界面中,分页逻辑和首页类似,这里就不重复讲解了,大家看代码即可。

    2.3 交易详情界面

    具体代码在 TxsDetailActivity.java 界面中,这里使用的是简单的 Query 查询与结果展示。

    3. 总结

    阅读完文章与代码,并一起运行 Demo App 到客户端之后,大家已经完整体验了一遍基于 ArcBlock Android SDK 开发 App 的过程,ArcBlock Android SDK 的价值远不止于此,大家可以在此基础上继续探索 OCAP Playground 并思考自己的点子,然后结合 ArcBlock Android SDK 在 Android 客户端上实现它们。

    相关阅读

    ArcBlock 北京黑客松,你来不来?

    ArcBlock 博客 | OCAP 超简易集成攻略( iOS 版篇)

    ArcBlock 博客 | 浅析数据对区块链行业发展的重要性

    ArcBlock 博客 | 开放链访问协议为何采用 GraphQL

    ArcBlock 博客 | 如何解析 BITCOIN 的数据

    ArcBlock 博客 | 30 天 21 个版本 OCAP Playground 都经历了哪些变化?

    ArcBlock 博客 | 如何在几十个 Repo 中游刃有余?

    ArcBlock 博客 | OCAP Playground 入门指南

    更多ArcBlock区块基石信息,柯林斯关注以下渠道了解:

    • Twitter  | https://twitter.com/ArcBlock_io

    • Instagram  | https://www.instagram.com/arcblock/

    • Facebook  | https://www.facebook.com/arcblock.io/

    • elegram  | https://t.me/ArcBlock

    • LinkedIn  | https://www.linkedin.com/company/18355951/

    • Reddit  | https://www.reddit.com/r/arcblock/

    •   | https://medium.com/arcblock

    • 博微  | https://weibo.com/realArcBlock

    • 信微群  | 加拉群小助手:Ddchain

    • 电报群| 电报组:

      电报(英文):  https //t.me/ArcBlock

      电报(繁体中文):  https //t.me/ArcblockAsian

    ArcBlock 官网 点击登录

ArcBlock 博客 | OCAP超简易集成攻略(Android 篇)相关推荐

  1. ArcBlock 博客 | Exchange 服务的工作流程以及如何集成到 OCAP 服务

    作者:周蕾  (ArcBlock 团队后端开发工程师) 为帮助大家深入了解 ArcBlock 的开放链访问协议的实现和技术细节,我们工程团队将定期接受采访或撰写技术博客来"解密" ...

  2. 博客秘诀:超人气博客是怎样炼成的(提升博客人气不可不用的绝招)

    博客秘诀:超人气博客是怎样炼成的(提升博客人气不可不用的绝招) 基本信息 原书名: ProBlogger: Secrets for Blogging Your Way to a Six-Figure ...

  3. 实习生娜娜(含视频) | ArcBlock 博客

    作者: 陈天(ArcBlock 研发副总裁) 来源: 程序人生 (ID:programmer_life) 我对实习生的要求,除去学习能力外,便是足够长的实习时间.所谓「足够长」,我的定义是至少两三个月 ...

  4. 在 ABT 节点上启动 Solid 服务器 | ArcBlock 博客

    作者: Matt McKinney 译者: 陈俊 为了把数据合法所有权归还给每个网络用户以破除当今互联网越来越集中垄断的格局,万维网之父蒂姆·伯纳斯-李从 2015 年开始研发 Solid,并于 20 ...

  5. 使用 Play with Docker 部署 ABT 节点 | ArcBlock 博客

    作者: Matt McKinney 译者: 陈俊 使用 Play with Docker 部署 ABT 节点 作为循序渐进的快速指南,本文为你介绍如何使用 Play with Docker (PWD) ...

  6. 计算机视觉领域的一些牛人博客,超有实力的研究机构等的网站链接(转 )

    计算机视觉领域的一些牛人博客,超有实力的研究机构等的网站链接 (1)googleResearch: http://research.google.com/index.html (2)MIT博士,汤晓欧 ...

  7. 随机森林的特征 是放回抽样么_机器学习超详细实践攻略(10):随机森林算法详解及小白都能看懂的调参指南...

    一.什么是随机森林 前面我们已经介绍了决策树的基本原理和使用.但是决策树有一个很大的缺陷:因为决策树会非常细致地划分样本,如果决策树分得太多细致,会导致其在训练集上出现过拟合,而如果决策树粗略地划分样 ...

  8. CPU超频全方位攻略

    生动的入门经典!CPU超频全方位攻略! 本文主要介绍如何进行CPU超频,内容非常简单,而且细致,比较适合DIY初级爱好者.  现在一提起DIY,要是少了超频,就好像炒菜少了盐一样,索然无味了.超频中最 ...

  9. android博客导航总结,以及个人常用android免费学习干货(文章,视频,矢量图,字体等)资源分享?

    android博客导航总结与资源分享 1.博客总结 1.mob平台的使用 2.QMUI部分功能实现 3.XUI部分功能实现 4.其他功能 5.Flutter博客总结: 2.资源分享 1.文章类型资源分 ...

最新文章

  1. 团队离职率30%,被CTO怼了:这5招记住了,再有人离职,先把自己裁了!
  2. 01 SQL核心语句
  3. 为什么Python不是未来的编程语言?
  4. python 100题_python3.0练习100题——001
  5. Unfair contest(个人做法)
  6. 力扣18. 四数之和(JavaScript)
  7. 中文乱码之springboot框架中两工程之间参数传递乱码
  8. IntelliJ IDEA如何build path
  9. python 导入包 导入模块
  10. 电子商务网站PPT选择服务器,第8章 电子商务系统规划与建设课件.ppt
  11. android 断点下载的实现,自己动手实现一个Android断点下载
  12. usbserver专业解决用友u8和t3USB加密狗虚拟化识别解决方案
  13. 弘辽科技:淘宝提升销量不评价有效果吗?不提升销量能做起来吗?
  14. base64字符串转化成图片
  15. PHP 验证码无法显示的问题
  16. 计算机主板的主要作用,计算机主板的作用
  17. CTF--攻防世界crypto新手训练1-6
  18. 一个并不“艰难”的决定—一个程序员的成长史(3)
  19. 分享几个阿里云盘资源搜索平台
  20. STM8L相关功能配置

热门文章

  1. Winodows XP做服务器,突破10人限制
  2. 小程序商城|微信小程序商城系统
  3. 关于字节(内存)对齐
  4. 推荐几个app开源项目
  5. 环路补偿之单零点分析 ---- 以“反相放大器”为例分析
  6. TortoiseGit安装与汉化详细教程
  7. Cookie的理解含义
  8. OSI七层模型及TCP/IP网络四层模型
  9. 如何将上传到优酷的视频加载到网页中?
  10. OBS Studio的安装与使用