成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

ArkUI eTS PA計算十二生肖--Service Ability

系統(tǒng) OpenHarmony
計算生肖由Service Ability負責,eTS只負責UI,這樣把業(yè)務(wù)邏輯抽出來了,比如Java UI也實現(xiàn)這個計算生肖功能,就可以調(diào)用Service Ability的計算生肖方法,從而把計算生肖方法共用出來,如果把計算生肖邏輯放到云函數(shù)上,那樣H5, 小程序等其它都可以調(diào)用。

??想了解更多關(guān)于開源的內(nèi)容,請訪問:??

??51CTO 開源基礎(chǔ)軟件社區(qū)??

??https://ost.51cto.com??

1、前言

這篇文章是通過PA(Service Ability)來計算生肖的,UI是一樣的,計算方式不同,通過此文章可以學(xué)習到eTS如何調(diào)用Java Ability,返回JSON字符串結(jié)果,顯示到eTS上,由于預(yù)覽器不支持調(diào)用PA, 所以這里使用的是遠程模擬器P40 Pro 來開發(fā)測試。

2、效果

ArkUI eTS PA計算十二生肖[Service Ability]-開源基礎(chǔ)軟件社區(qū)

ArkUI eTS PA計算十二生肖[Service Ability]-開源基礎(chǔ)軟件社區(qū)

3、講解

首先創(chuàng)建Service Ability,如下圖:

  1. ArkUI eTS PA計算十二生肖[Service Ability]-開源基礎(chǔ)軟件社區(qū)

    ArkUI eTS PA計算十二生肖[Service Ability]-開源基礎(chǔ)軟件社區(qū)

創(chuàng)建好Service Ability后,會自動在config.json生成以下配置:

  1. ArkUI eTS PA計算十二生肖[Service Ability]-開源基礎(chǔ)軟件社區(qū)

下面開始來講解Service Ability如何寫并計算出生肖,如果之前沒有JS 調(diào)用Java Ability經(jīng)驗的,可以先看一下官方文檔CallAbility調(diào)用基本計算服務(wù)示例 這個實例有詳細講解,我也是參考些文檔。

FA在請求PA服務(wù)時會調(diào)用Ability.connectAbility連接PA,連接成功后,需要在onConnect返回一個remote對象,供FA向PA發(fā)送消息。

@Override
protected IRemoteObject onConnect(Intent intent) {
super.onConnect(intent);
return remote.asObject();
}

Remote對象里面請求方法自己實現(xiàn),自定義MyRemote類。

class MyRemote extends RemoteObject implements IRemoteBroker {
private static final int SUCCESS = 0;
private static final int ERROR = 1;
private static final int PLUS = 1001;
/**
* 構(gòu)造方法
*/
public MyRemote() {
super("MyService_MyRemote");
}
@Override
public boolean onRemoteRequest(int code, MessageParcel data, MessageParcel reply, MessageOption option) throws RemoteException {
// code是eTS傳參messageCode
switch (code) {
case PLUS: {
// 讀取參數(shù)數(shù)據(jù)
String dataStr = data.readString();
HiLog.info(LABEL_LOG, "xx" + dataStr);
Map<String, Object> param = new HashMap<>();
int year = -1;
try {
// 把讀取到字符串參數(shù)轉(zhuǎn)為Map對象
param = ZSONObject.stringToClass(dataStr, Map.class);
// 從對象中獲取參數(shù)年份
year = Integer.parseInt( String.valueOf(param.get("year")));
HiLog.info(LABEL_LOG, "xx獲取到年份是: " + year);
}catch (RuntimeException e) {
HiLog.error(LABEL_LOG, "convert failed.");
}
// Java計算十二生肖
String born = getBornFromJava(year);

// 返回結(jié)果當前僅支持String,對于復(fù)雜結(jié)構(gòu)可以序列化為ZSON字符串上報
Map<String, Object> result = new HashMap<>();
result.put("code", SUCCESS);
result.put("abilityResult", born);
reply.writeString(ZSONObject.toZSONString(result));
break;
}
default: {
Map<String, Object> result = new HashMap<>();
result.put("code", ERROR);
result.put("abilityError", "服務(wù)器繁忙, 請稍后再試!!!");
reply.writeString(ZSONObject.toZSONString(result));
return false;
}
}
return true;
}
@Override
public IRemoteObject asObject() {
return this;
}
}

根據(jù)年份計算生肖方法。

private String[] zodiac = {"猴", "雞", "狗", "豬", "鼠", "牛", "虎", "兔", "龍", "蛇", "馬", "羊"};
/**
* Java計算十二生肖
* @param year
* @return
*/
private String getBornFromJava(int year) {
if (year == -1) { return "不是有效年份"; }
int idx = year % 12;
return zodiac[idx];
}

到此Java代碼就講解完了,下來看看eTS如何調(diào)用剛才創(chuàng)建的Service Ability。

前端調(diào)用Service Ability,修改一下之前getBorn函數(shù)就可以。

// 計算生肖
getBorn() {
// eTS端計算十二生肖
// let idx = this.year%12
// this.born = this.zodiac[idx]
let that = this;
// 調(diào)用PA返回十二生肖
FeatureAbility.callAbility({
bundleName: "com.demo",
abilityName: "com.demo.ZodiacServiceAbility",
// abilityType: 0-Ability; 1-Internal Ability
abilityType: 0,
messageCode: 1001,
data: {year: this.year},
// syncOption(Optional, default sync): 0-Sync; 1-Async
syncOption: 0
}).then((data) => {
console.info("xx返回結(jié)果是: " + data);
let jsonObj = JSON.parse(data);
if(jsonObj.code === 0) {
that.born = jsonObj.abilityResult;
}else{
AlertDialog.show({
message: jsonObj.abilityError
})
}
})
}

4、總結(jié)

計算生肖由Service Ability負責,eTS只負責UI,這樣把業(yè)務(wù)邏輯抽出來了,比如Java UI也實現(xiàn)這個計算生肖功能,就可以調(diào)用Service Ability的計算生肖方法,從而把計算生肖方法共用出來,如果把計算生肖邏輯放到云函數(shù)上,那樣H5, 小程序等其它都可以調(diào)用。

??想了解更多關(guān)于開源的內(nèi)容,請訪問:??

??51CTO 開源基礎(chǔ)軟件社區(qū)??

??https://ost.51cto.com??。

責任編輯:jianghua 來源: 鴻蒙社區(qū)
相關(guān)推薦

2023-03-14 21:19:29

云函數(shù)云數(shù)據(jù)庫

2023-03-15 16:24:43

云數(shù)據(jù)庫代碼開發(fā)

2022-09-08 15:18:51

Ability鴻蒙

2020-12-18 11:05:25

鴻蒙HarmonyOS游戲

2022-02-17 21:05:26

AbilityJS FAJava PA

2022-02-17 21:28:08

AbilityJSFA鴻蒙

2022-02-17 21:19:35

JSFA操作系統(tǒng)鴻蒙

2022-02-23 15:07:22

HarmonyOS常用控制ArkUI-eTS

2022-07-04 16:34:46

流光按鈕Stack

2022-11-02 16:06:54

ArkUIETS

2022-10-24 14:49:54

ArkUI心電圖組件

2021-12-20 10:07:39

鴻蒙HarmonyOS應(yīng)用

2022-02-23 15:36:46

ArkUI-eTS事件監(jiān)聽鴻蒙

2022-01-25 17:05:44

ArkUI_eTS操作系統(tǒng)鴻蒙

2021-11-26 10:08:57

鴻蒙HarmonyOS應(yīng)用

2022-05-26 14:50:15

ArkUITS擴展

2022-08-12 19:13:07

etswifi連接操作

2023-03-13 15:03:05

鴻蒙ArkUI

2022-09-05 15:22:27

ArkUIets

2022-07-07 14:01:59

管家服務(wù)系統(tǒng)ArkUI eTS
點贊
收藏

51CTO技術(shù)棧公眾號

主站蜘蛛池模板: 天天爱天天操 | a黄在线观看 | 国产精品免费播放 | 国产精品av久久久久久毛片 | 天堂亚洲网 | 欧美激情在线播放 | 日韩欧美一级精品久久 | 亚洲第一av | 亚洲第一免费播放区 | 国产亚洲欧美日韩精品一区二区三区 | 亚洲成人在线免费 | 欧美在线小视频 | 欧美一级片在线看 | 亚洲精品大全 | 中文日韩在线视频 | 亚洲伊人久久综合 | h视频在线免费观看 | 国产在线拍偷自揄拍视频 | 欧美亚洲视频 | 在线观看国产精品视频 | 亚洲三级视频 | 91中文在线观看 | 日本黄色免费片 | 成人免费一区二区三区牛牛 | 日韩视频一区 | 一区二区三区韩国 | 成人性视频免费网站 | 亚洲欧美视频一区 | 久久www免费人成看片高清 | 亚洲成人二区 | 国产真实精品久久二三区 | 精品毛片| 日韩 欧美 二区 | 色综合色综合色综合 | 91av小视频| 国外成人免费视频 | 亚洲欧美综合精品久久成人 | 黄色大全免费看 | 国产精品日产欧美久久久久 | 视频在线观看一区 | 精品日本久久久久久久久久 |