為 Android 開發者打造的無縫 OCAP 整合

作者:NateRobinson(ArcBlock 行動工程師)
您之前已經看過 iOS 的簡易整合教學,但我猜有些 Android 開發者還在觀望。今天我將向您展示基於前幾篇文章的 ArcBlock Android SDK 快速整合過程。本文的整體概念與 iOS 相同:如何使用 ArcBlock Android SDK 開發一個簡單的應用程式。讓我們開始吧!
1. ArcBlock Android SDK 詳細入門文件
建議您點擊連結閱讀 ArcBlock Android SDK 詳細入門文件。該文件詳細說明了整個 SDK 的使用方式。
以下是入門文件的摘要:
- 正確配置 maven 並引入函式庫
- 下載 schema.json,撰寫 .graphql 檔案,並配置檔案目錄
- 一般資料查詢
- CoreKitBeanMapper 初始化
- Query 初始化
- CoreKitViewModel 初始化並設置資料擷取監聽事件
- 分頁資料查詢
- CoreKitPagedHelper 初始化
- CoreKitBeanMapper 初始化
- CoreKitPagedViewModel 初始化並設置資料擷取監聽事件
- 訂閱資料並監聽
- 開啟對應 ABCoreKitClient 的 Socket 開關
- Subscription 初始化
- CoreKitSubViewModel 初始化並設置資料擷取監聽事件
請特別注意 CustomType 與 ABCoreKitClient 初始化的相關章節,ArcBlock Android SDK 入門文件 - 其他配置,您將在其中找到詳細說明與程式碼範例。
2. 基於 ArcBlock Android SDK 開發應用程式的範例
我們先來看看最終應用程式的樣貌。整體功能並不複雜。區塊以分頁方式查詢,每個方形區塊代表發生的交易。方形區塊的顏色深淺由交易規模決定。點擊區塊可進入交易詳情介面,點擊「查看更多」可跳轉至區塊交易頁面視圖介面:

該應用程式使用了三種資料查詢:
- 區塊分頁查詢
- 區塊交易分頁查詢
- 區塊交易詳情查詢
以上三種查詢儲存於 OCAP Playground,如有興趣,您可以探索這些查詢及整個 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,因此每次查詢實際上會觸發兩次回呼事件,為了有效地重新載入並刷新頁面,此處使用了 Android 提供的 DiffUtil。
2.2 區塊交易分頁介面
在 BlockTxsActivity.java 介面中,分頁邏輯與首頁類似。
2.3 區塊交易詳情
具體程式碼位於 TxsDetailActivity.java 介面,使用簡單查詢並呈現結果。
3. 總結
在閱讀 Android SDK 入門說明、審閱程式碼並一起執行示範應用程式之後,我們已完整體驗了基於 ArcBlock Android SDK 開發應用程式的流程。當然,ArcBlock Android SDK 的價值遠不止於此。若要探索其更多功能,您可以繼續探索 OCAP Playground。提出您自己的想法,然後使用 ArcBlock Android SDK 在 Android 客戶端加以實現。
祝您順利!
本頁涉及
產品
-
OCAP
active
一個用統一介面查詢鏈上資料的協定,不必每條鏈配一個客戶端。ArcBlock 持有相關專利。