ArcBlock 博客 | OCAP超简易集成攻略(Android 篇)
作者:?Nate Robinson(ArcBlock 團隊移動開發(fā)工程師)
5 天后,ArcBlock 第三場、中國的第一場內(nèi)測版黑客馬拉松即將在北京舉行,截至本文推送之際,已有 56 人報名,剩余名額 4 個。ArcBlock 研發(fā)副總裁陳天、OCAP 項目負責人丁沛靈已經(jīng)從西雅圖飛來北京,恭候各位黑客大駕光臨。
每場黑客松,我們都會提供越來越完善豐富的 SDK、工具和文檔,幫助開發(fā)者能在 ArcBlock 平臺開發(fā)更多更好的應用。今天,我們請 ArcBlock 團隊移動開發(fā)工程師 Nate Robinson 介紹如何玩轉? OCAP Android SDK。
前面想必大家已經(jīng)看到了 iOS 的簡易集成攻略,估計 Android 的小伙伴們已經(jīng)坐不住了,今天就在前幾篇的基礎上再給大家講解一下 ArcBlock Android SDK 的快速集成。文章整體的思路同 iOS,會以如何使用 ArcBlock Android SDK 開發(fā)一款簡單的 App 作為整篇文章的主線,那么讓我們開始吧!
1. 閱讀詳細的 ArcBlock Android SDK 入門文檔
詳細的?ArcBlock Android SDK 入門文檔?建議點開鏈接通讀一遍,文檔里面對整個 SDK 的使用做了詳細的說明,看完之后再回來看下面的入門文檔概括會有一個更清晰的理解。
入門文檔概括:
正確配置 maven,引入 Library
下載 schema.json,編寫 .graphql 文件,并配置好文件目錄
普通數(shù)據(jù)查詢
CoreKitBeanMapper 初始化
Query 初始化
CoreKitViewModel 初始化與數(shù)據(jù)獲取的監(jiān)聽事件設置
分頁數(shù)據(jù)查詢
CoreKitPagedHelper 初始化
CoreKitBeanMapper 初始化
CoreKitPagedViewModel 初始化與數(shù)據(jù)獲取監(jiān)聽事件的設置
訂閱數(shù)據(jù)與監(jiān)聽
打開對應的 ABCoreKitClient 的 Socket 開關
Subscription 初始化
CoreKitSubViewModel 初始化與數(shù)據(jù)獲取監(jiān)聽實踐設置
另外可能需要額外注意一下的是 CustomType 和 ABCoreKitClient 初始化,這些可以在?ArcBlock Android SDK 入門文檔 - 其他配置?找到詳細的說明和代碼示例。
2. 基于 ArcBlock Android SDK 開發(fā) App 的例子
首先,我們先看看最終要完成 App 的樣子,整體功能并不復雜,分頁查詢區(qū)塊,并以一個個正方形方塊代表一個個發(fā)生的交易,方塊顏色的深淺由交易的大小決定,點擊某個方塊進入到交易詳情界面,點擊查看更多跳轉到區(qū)塊交易分頁查看界面:
整個 App 用到了三個數(shù)據(jù)查詢:
區(qū)塊分頁查詢
區(qū)塊交易分頁查詢
區(qū)塊交易詳情查詢
上面三個查詢語句保存在?PlayBook,感興趣的話可以打開探索一番
完整項目代碼
直接 clone 倉庫到本地即可運行,下面是具體的代碼講解。
2.1 首頁區(qū)塊分頁界面
在 MainActivity.java 的 initData() 方法中實現(xiàn)了區(qū)塊查詢的核心邏輯,重點看一下下面代碼:
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 會走兩遍回調(diào)事件,為了高效的去重與頁面刷新,這邊使用的是 Android 自帶的 DiffUtil。
2.2 區(qū)塊交易分頁界面
具體代碼在 BlockTxsActivity.java 界面中,分頁邏輯和首頁類似,這里就不重復講解了,大家看代碼即可。
2.3 交易詳情界面
具體代碼在 TxsDetailActivity.java 界面中,這里使用的是簡單的 Query 查詢與結果展示。
3. 總結
閱讀完文章與代碼,并一起運行 Demo App 到客戶端之后,大家已經(jīng)完整體驗了一遍基于 ArcBlock Android SDK 開發(fā) App 的過程,ArcBlock Android SDK 的價值遠不止于此,大家可以在此基礎上繼續(xù)探索?OCAP Playground?并思考自己的點子,然后結合 ArcBlock Android SDK 在 Android 客戶端上實現(xiàn)它們。
相關閱讀
ArcBlock 北京黑客松,你來不來?
ArcBlock 博客 | OCAP 超簡易集成攻略( iOS 版篇)
ArcBlock 博客 | 淺析數(shù)據(jù)對區(qū)塊鏈行業(yè)發(fā)展的重要性
ArcBlock 博客 | 開放鏈訪問協(xié)議為何采用 GraphQL
ArcBlock 博客 | 如何解析 BITCOIN 的數(shù)據(jù)
ArcBlock 博客 | 30 天 21 個版本 OCAP Playground 都經(jīng)歷了哪些變化?
ArcBlock 博客 | 如何在幾十個 Repo 中游刃有余?
ArcBlock 博客 | OCAP Playground 入門指南
更多ArcBlock區(qū)塊基石信息,柯林斯關注以下渠道了解:?
Twitter??|?https://twitter.com/ArcBlock_io
Instagram??|?https://www.instagram.com/arcblock/
Facebook??|?https://www.facebook.com/arcblock.io/
T?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 官網(wǎng) 點擊登錄
總結
以上是生活随笔為你收集整理的ArcBlock 博客 | OCAP超简易集成攻略(Android 篇)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java公寓管理系统设计与实现,学生公寓
- 下一篇: 内存优化之资源管理