跳到主要內容

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

ArcBlock
AndroidMobileOCAPTutorials

作者:NateRobinson(ArcBlock 行動工程師)

您之前已經看過 iOS 的簡易整合教學,但我猜有些 Android 開發者還在觀望。今天我將向您展示基於前幾篇文章的 ArcBlock Android SDK 快速整合過程。本文的整體概念與 iOS 相同:如何使用 ArcBlock Android SDK 開發一個簡單的應用程式。讓我們開始吧!

1. ArcBlock Android SDK 詳細入門文件

建議您點擊連結閱讀 ArcBlock Android SDK 詳細入門文件。該文件詳細說明了整個 SDK 的使用方式。

以下是入門文件的摘要:

  1. 正確配置 maven 並引入函式庫
  2. 下載 schema.json,撰寫 .graphql 檔案,並配置檔案目錄
  3. 一般資料查詢
    • CoreKitBeanMapper 初始化
    • Query 初始化
    • CoreKitViewModel 初始化並設置資料擷取監聽事件
  1. 分頁資料查詢
    • CoreKitPagedHelper 初始化
    • CoreKitBeanMapper 初始化
    • CoreKitPagedViewModel 初始化並設置資料擷取監聽事件
  1. 訂閱資料並監聽
    • 開啟對應 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 持有相關專利。