From 46c2c77a993baa3acf58bfb348846c931b815d03 Mon Sep 17 00:00:00 2001 From: guojin26 Date: Fri, 3 Dec 2021 16:14:08 +0800 Subject: [PATCH 1/3] add jsworker Signed-off-by: guojin26 --- thread/JsWorker/README_zh.md | 19 +++++ thread/JsWorker/build.gradle | 45 ++++++++++++ thread/JsWorker/entry/build.gradle | 21 ++++++ thread/JsWorker/entry/src/main/config.json | 61 ++++++++++++++++ .../entry/src/main/js/MainAbility/app.js | 23 ++++++ .../src/main/js/MainAbility/i18n/en-US.json | 12 ++++ .../src/main/js/MainAbility/i18n/zh-CN.json | 11 +++ .../main/js/MainAbility/pages/index/index.css | 67 ++++++++++++++++++ .../main/js/MainAbility/pages/index/index.hml | 28 ++++++++ .../main/js/MainAbility/pages/index/index.js | 66 +++++++++++++++++ .../src/main/js/MainAbility/workers/worker.js | 36 ++++++++++ .../main/resources/base/element/string.json | 12 ++++ .../src/main/resources/base/media/icon.png | Bin 0 -> 6790 bytes thread/JsWorker/screenshots/devices/main.png | Bin 0 -> 28487 bytes thread/JsWorker/settings.gradle | 1 + 15 files changed, 402 insertions(+) create mode 100644 thread/JsWorker/README_zh.md create mode 100644 thread/JsWorker/build.gradle create mode 100644 thread/JsWorker/entry/build.gradle create mode 100644 thread/JsWorker/entry/src/main/config.json create mode 100644 thread/JsWorker/entry/src/main/js/MainAbility/app.js create mode 100644 thread/JsWorker/entry/src/main/js/MainAbility/i18n/en-US.json create mode 100644 thread/JsWorker/entry/src/main/js/MainAbility/i18n/zh-CN.json create mode 100644 thread/JsWorker/entry/src/main/js/MainAbility/pages/index/index.css create mode 100644 thread/JsWorker/entry/src/main/js/MainAbility/pages/index/index.hml create mode 100644 thread/JsWorker/entry/src/main/js/MainAbility/pages/index/index.js create mode 100644 thread/JsWorker/entry/src/main/js/MainAbility/workers/worker.js create mode 100644 thread/JsWorker/entry/src/main/resources/base/element/string.json create mode 100644 thread/JsWorker/entry/src/main/resources/base/media/icon.png create mode 100644 thread/JsWorker/screenshots/devices/main.png create mode 100644 thread/JsWorker/settings.gradle diff --git a/thread/JsWorker/README_zh.md b/thread/JsWorker/README_zh.md new file mode 100644 index 0000000000..0de2cfc76b --- /dev/null +++ b/thread/JsWorker/README_zh.md @@ -0,0 +1,19 @@ +# JsWorker + + + +### 简介 + +本示例展示了在Js中如何启动一个worker线程,并实现worker线程和宿主线程的通信。 + +### 使用说明 + +1、在首页中显示了排序前的四个字符串,点击**字符串排序**按钮,会将排序前的字符串发送给worker线程,在worker线程实现字符串排序,然后将排序后的字符串发送给主线程,主线程中显示排序后的字符串。 + +2、点击**清除**按钮,清除排序后的字符串。 + + + +### 约束与限制 + +本示例仅支持标准系统上运行。 diff --git a/thread/JsWorker/build.gradle b/thread/JsWorker/build.gradle new file mode 100644 index 0000000000..fa942b1f86 --- /dev/null +++ b/thread/JsWorker/build.gradle @@ -0,0 +1,45 @@ +// Top-level build file where you can add configuration options common to all sub-projects/modules. +apply plugin: 'com.huawei.ohos.app' + +// For instructions on signature configuration, see https://developer.harmonyos.com/cn/docs/documentation/doc-guides/ide_debug_device-0000001053822404#section1112183053510 +ohos { + signingConfigs { + release { + storeFile file('D:\\hap\\appl2.p12') + storePassword '0000001C32FBC78E619631A80864E6538BC3D6BA739A78488D79F644165E05558E04C874418C3A40BF68FD6F' + keyAlias = 'appl2' + keyPassword '0000001C739F42500BF36C0CA2D51B1AE538F1166C4BE008B40E2C3D24F414398754C833372FAE468F6D6961' + signAlg = 'SHA256withECDSA' + profile file('D:\\hap\\jsworker.p7b') + certpath file('D:\\hap\\appl2.cer') + } + } + compileSdkVersion 7 + supportSystem "standard" +} + +buildscript { + repositories { + maven { + url 'https://repo.huaweicloud.com/repository/maven/' + } + maven { + url 'https://developer.huawei.com/repo/' + } + } + dependencies { + classpath 'com.huawei.ohos:hap:3.0.3.4' + classpath 'com.huawei.ohos:decctest:1.2.6.0' + } +} + +allprojects { + repositories { + maven { + url 'https://repo.huaweicloud.com/repository/maven/' + } + maven { + url 'https://developer.huawei.com/repo/' + } + } +} diff --git a/thread/JsWorker/entry/build.gradle b/thread/JsWorker/entry/build.gradle new file mode 100644 index 0000000000..895f5ab55b --- /dev/null +++ b/thread/JsWorker/entry/build.gradle @@ -0,0 +1,21 @@ +apply plugin: 'com.huawei.ohos.hap' +// For instructions on signature configuration, see https://developer.harmonyos.com/cn/docs/documentation/doc-guides/ide_debug_device-0000001053822404#section1112183053510 +ohos { + compileSdkVersion 7 + defaultConfig { + compatibleSdkVersion 7 + } + buildTypes { + release { + proguardOpt { + proguardEnabled false + rulesFiles 'proguard-rules.pro' + } + } + } +} + +dependencies { + implementation fileTree(dir: 'libs', include: ['*.jar', '*.har']) + testImplementation 'junit:junit:4.13.1' +} diff --git a/thread/JsWorker/entry/src/main/config.json b/thread/JsWorker/entry/src/main/config.json new file mode 100644 index 0000000000..665226fa65 --- /dev/null +++ b/thread/JsWorker/entry/src/main/config.json @@ -0,0 +1,61 @@ +{ + "app": { + "bundleName": "ohos.samples.jsworker", + "vendor": "samples", + "version": { + "code": 1000000, + "name": "1.0.0" + } + }, + "deviceConfig": {}, + "module": { + "package": "ohos.samples.jsworker", + "name": ".MyApplication", + "mainAbility": ".MainAbility", + "deviceType": [ + "phone" + ], + "distro": { + "deliveryWithInstall": true, + "moduleName": "entry", + "moduleType": "entry", + "installationFree": false + }, + "abilities": [ + { + "skills": [ + { + "entities": [ + "entity.system.home" + ], + "actions": [ + "action.system.home" + ] + } + ], + "orientation": "unspecified", + "visible": true, + "srcPath": "MainAbility", + "name": ".MainAbility", + "srcLanguage": "js", + "icon": "$media:icon", + "description": "$string:description_mainability", + "label": "$string:entry_MainAbility", + "type": "page", + "launchType": "standard" + } + ], + "js": [ + { + "pages": [ + "pages/index/index" + ], + "name": ".MainAbility", + "window": { + "designWidth": 720, + "autoDesignWidth": false + } + } + ] + } +} \ No newline at end of file diff --git a/thread/JsWorker/entry/src/main/js/MainAbility/app.js b/thread/JsWorker/entry/src/main/js/MainAbility/app.js new file mode 100644 index 0000000000..58d12b7b50 --- /dev/null +++ b/thread/JsWorker/entry/src/main/js/MainAbility/app.js @@ -0,0 +1,23 @@ +/* + * Copyright (c) 2021 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +export default { + onCreate() { + console.info("Application onCreate"); + }, + onDestroy() { + console.info("Application onDestroy"); + } +}; diff --git a/thread/JsWorker/entry/src/main/js/MainAbility/i18n/en-US.json b/thread/JsWorker/entry/src/main/js/MainAbility/i18n/en-US.json new file mode 100644 index 0000000000..2bc254fa3d --- /dev/null +++ b/thread/JsWorker/entry/src/main/js/MainAbility/i18n/en-US.json @@ -0,0 +1,12 @@ +{ + "strings": { + "title": "JsWorker", + "tip_before": "Before sort:", + "tip_after": "After sort:", + "send_string": "Sort string array", + "clear": "Clear", + "menus": ["string adc","string adcf","string afc","string aaccdd"] + }, + "Files": { + } +} \ No newline at end of file diff --git a/thread/JsWorker/entry/src/main/js/MainAbility/i18n/zh-CN.json b/thread/JsWorker/entry/src/main/js/MainAbility/i18n/zh-CN.json new file mode 100644 index 0000000000..7353845156 --- /dev/null +++ b/thread/JsWorker/entry/src/main/js/MainAbility/i18n/zh-CN.json @@ -0,0 +1,11 @@ +{ + "strings": { + "title": "JsWorker", + "tip_before": "排序前:", + "tip_after": "排序后:", + "send_string": "字符串排序", + "clear": "清除" + }, + "Files": { + } +} \ No newline at end of file diff --git a/thread/JsWorker/entry/src/main/js/MainAbility/pages/index/index.css b/thread/JsWorker/entry/src/main/js/MainAbility/pages/index/index.css new file mode 100644 index 0000000000..50d91acf9a --- /dev/null +++ b/thread/JsWorker/entry/src/main/js/MainAbility/pages/index/index.css @@ -0,0 +1,67 @@ +/* + * Copyright (c) 2021 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +.container { + display: flex; + flex-direction: column; + justify-content: center; + align-items: center; + left: 0px; + top: 0px; + width: 100%; + height: 100%; +} + +.title { + font-size: 42px; + color: #FFFFFF; + opacity: 0.9; + width: 100%; + padding: 10px; + background-color: dodgerblue; + height: 90px; +} + +.content { + width: 100%; + padding: 15px; + align-content: flex-start; + flex-direction: column; +} + +.btn { + width: 90%; + height: 90px; + font-size: 40px; + margin-top: 30px; + align-self: center; +} + +.tip { + font-size: 40px; + color: black; + margin-top: 20px; +} + +.text { + font-size: 40px; + color: black; + opacity: 0.9; + width: 100%; + height: 250px; + padding: 10px; + background-color: #F0F0F0; + margin-top: 10px; +} diff --git a/thread/JsWorker/entry/src/main/js/MainAbility/pages/index/index.hml b/thread/JsWorker/entry/src/main/js/MainAbility/pages/index/index.hml new file mode 100644 index 0000000000..9cf0c7dd52 --- /dev/null +++ b/thread/JsWorker/entry/src/main/js/MainAbility/pages/index/index.hml @@ -0,0 +1,28 @@ + + +
+ {{ $t('strings.title') }} + + + {{ $t('strings.tip_before') }} + {{ before }} + {{ $t('strings.tip_after') }} + {{ after }} + + + + +
diff --git a/thread/JsWorker/entry/src/main/js/MainAbility/pages/index/index.js b/thread/JsWorker/entry/src/main/js/MainAbility/pages/index/index.js new file mode 100644 index 0000000000..2bb5ac9fc1 --- /dev/null +++ b/thread/JsWorker/entry/src/main/js/MainAbility/pages/index/index.js @@ -0,0 +1,66 @@ +/* + * Copyright (c) 2021 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import worker from '@ohos.worker'; + +let afterStr = null + +export default { + data: { + before: "", + after: "", + worker: new worker.Worker("workers/worker.js", { + name: "worker_test" + }) + }, + onInit() { + this.before = this.$t('strings.menus') + this.worker.onerror = function (data) { + console.info('[worker.index] on error:' + data) + } + this.worker.onmessageerror = function (data) { + console.info('[worker.index] on messageerror:' + data) + } + this.worker.onexit = function (data) { + console.info('[worker.index] on exit:' + data) + } + this.worker.onmessage = function (e) { + var data = e.data + if (data.type == 'normal') { + console.info('[worker.index] normal:' + data.data) + this.after = data.data + } + } + }, + sendString: function () { + var obj = { + type: "normal", data: this.before.toString() + } + console.info('[worker.index] sendString:' + obj.data) + this.worker.postMessage(obj) +// setTimeout(() => { +// this.after = afterStr +// }, 500) + }, + clear: function () { + this.after = "" + }, + terminate() { + this.worker.terminate() + } +} + + + diff --git a/thread/JsWorker/entry/src/main/js/MainAbility/workers/worker.js b/thread/JsWorker/entry/src/main/js/MainAbility/workers/worker.js new file mode 100644 index 0000000000..ea67e4dec4 --- /dev/null +++ b/thread/JsWorker/entry/src/main/js/MainAbility/workers/worker.js @@ -0,0 +1,36 @@ +/* + * Copyright (c) 2021 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import workers from '@ohos.worker'; + +const parentPort = workers.parentPort + +parentPort.onmessageerror = function (e) { + var data = e.data + console.info('[worker.worker] onmessageerror:' + JSON.stringify(data)) +} + +parentPort.onmessage = function (e) { + var data = e.data + console.info('[worker.worker] onmessage:' + JSON.stringify(data)) + if (data.type == 'normal') { + var obj = data.data + console.info('[worker.worker] postMessage obj:' + obj) + var after = obj.split(",").sort() + console.info('[worker.worker] postMessage after:' + after) + data.data = after + parentPort.postMessage(data) + } +} \ No newline at end of file diff --git a/thread/JsWorker/entry/src/main/resources/base/element/string.json b/thread/JsWorker/entry/src/main/resources/base/element/string.json new file mode 100644 index 0000000000..caccf1984e --- /dev/null +++ b/thread/JsWorker/entry/src/main/resources/base/element/string.json @@ -0,0 +1,12 @@ +{ + "string": [ + { + "name": "entry_MainAbility", + "value": "JsWorker" + }, + { + "name": "description_mainability", + "value": "JsWorker Ability" + } + ] +} \ No newline at end of file diff --git a/thread/JsWorker/entry/src/main/resources/base/media/icon.png b/thread/JsWorker/entry/src/main/resources/base/media/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..ce307a8827bd75456441ceb57d530e4c8d45d36c GIT binary patch literal 6790 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 Date: Fri, 3 Dec 2021 16:17:49 +0800 Subject: [PATCH 2/3] update build Signed-off-by: guojin26 --- thread/JsWorker/build.gradle | 11 ----------- thread/JsWorker/entry/src/main/config.json | 1 - 2 files changed, 12 deletions(-) diff --git a/thread/JsWorker/build.gradle b/thread/JsWorker/build.gradle index fa942b1f86..8469dbed39 100644 --- a/thread/JsWorker/build.gradle +++ b/thread/JsWorker/build.gradle @@ -3,17 +3,6 @@ apply plugin: 'com.huawei.ohos.app' // For instructions on signature configuration, see https://developer.harmonyos.com/cn/docs/documentation/doc-guides/ide_debug_device-0000001053822404#section1112183053510 ohos { - signingConfigs { - release { - storeFile file('D:\\hap\\appl2.p12') - storePassword '0000001C32FBC78E619631A80864E6538BC3D6BA739A78488D79F644165E05558E04C874418C3A40BF68FD6F' - keyAlias = 'appl2' - keyPassword '0000001C739F42500BF36C0CA2D51B1AE538F1166C4BE008B40E2C3D24F414398754C833372FAE468F6D6961' - signAlg = 'SHA256withECDSA' - profile file('D:\\hap\\jsworker.p7b') - certpath file('D:\\hap\\appl2.cer') - } - } compileSdkVersion 7 supportSystem "standard" } diff --git a/thread/JsWorker/entry/src/main/config.json b/thread/JsWorker/entry/src/main/config.json index 665226fa65..d4c96c5d84 100644 --- a/thread/JsWorker/entry/src/main/config.json +++ b/thread/JsWorker/entry/src/main/config.json @@ -1,7 +1,6 @@ { "app": { "bundleName": "ohos.samples.jsworker", - "vendor": "samples", "version": { "code": 1000000, "name": "1.0.0" -- Gitee From 1bd07a56bdb240d6ce083cdc79555b3cc7c2546a Mon Sep 17 00:00:00 2001 From: guojin26 Date: Fri, 3 Dec 2021 16:19:36 +0800 Subject: [PATCH 3/3] delete Signed-off-by: guojin26 --- .../entry/src/main/js/MainAbility/pages/index/index.js | 3 --- 1 file changed, 3 deletions(-) diff --git a/thread/JsWorker/entry/src/main/js/MainAbility/pages/index/index.js b/thread/JsWorker/entry/src/main/js/MainAbility/pages/index/index.js index 2bb5ac9fc1..59bd4deb58 100644 --- a/thread/JsWorker/entry/src/main/js/MainAbility/pages/index/index.js +++ b/thread/JsWorker/entry/src/main/js/MainAbility/pages/index/index.js @@ -50,9 +50,6 @@ export default { } console.info('[worker.index] sendString:' + obj.data) this.worker.postMessage(obj) -// setTimeout(() => { -// this.after = afterStr -// }, 500) }, clear: function () { this.after = "" -- Gitee