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

作者: 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>>>() {
    			@Override
    			public void onChanged(@Nullable CoreKitPagedBean<List<BlocksByHeightQuery.Datum>> coreKitPagedBean) {
    				//1. handle return data
    				if (coreKitPagedBean.getStatus() == CoreKitBean.SUCCESS_CODE) {
    					if (coreKitPagedBean.getData() != null) {
    						// new a old list
    						List<BlocksByHeightQuery.Datum> oldList = new ArrayList<>();
    						oldList.addAll(mBlocks);
    						// set mBlocks with new data
    						mBlocks = coreKitPagedBean.getData();
    						DiffUtil.DiffResult result = DiffUtil.calculateDiff(new CoreKitDiffUtil<>(oldList, mBlocks), true);
    						// need this line , otherwise the update will have no effect
    						mListBlocksAdapter.setNewListData(mBlocks);
    						result.dispatchUpdatesTo(mListBlocksAdapter);
    						refreshNextAndPre();
    					}
    				}
    				//2. view status change and loadMore component need
    				if (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 官网 点击登录

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值