当前位置: 首页 > news >正文

导航网站怎么做seo南宁网站推广哪家好

导航网站怎么做seo,南宁网站推广哪家好,网络营销专业学校,江苏省常州建设高等职业技术学校网站【HarmonyOS Next】鸿蒙应用进程和线程详解 一、前言 进程的定义: 进程是系统进行资源分配的基本单位,是操作系统结构的基础。 在鸿蒙系统中,一个应用下会有三类进程: (1) 主进程, (2) ExtensionAbility进程&#xff…

【HarmonyOS Next】鸿蒙应用进程和线程详解

一、前言

进程

  1. 进程的定义:
    进程是系统进行资源分配的基本单位,是操作系统结构的基础。

    在鸿蒙系统中,一个应用下会有三类进程
    (1) 主进程
    (2) ExtensionAbility进程,同一种类型的ExtensionAbility会放在一个进程里。例如FromExtensionAbility,创建了两个,也会在同一个进程里。【ExtensionAbility详情参见官方链接:ExtensionAbility组件】
    (3) WebView渲染进程,用于网页容器渲染的进程。【这种设计提升了鸿蒙系统中arkWeb的网页容器渲染能力】

  2. 线程的定义:
    线程是操作系统进行运算调度的基本单位,是进程中的执行流,共享进程的资源。

    鸿蒙系统中,以主进程举例,会有三种类型的线程:
    (1)主线程
    (2)TaskPool Worker线程
    (3)Worker线程
    后两者用于创建多线程,TaskPool Worker主要用于处理轻量级的耗时任务。Worker用于偏重的耗时任务。

二、进程处理:

在这里插入图片描述

  1. 进程的创建:
    如上图所示,三方应用可以创建XXExtensionAbility的形式,增加应用内的进程。但是Webview渲染进程和主进程的是不能创建增加。

  2. 跨进程通信:
    鸿蒙系统目前提供了两种方式实现跨进程通信,公共事件和Emitter。这两个方案外,startAbility也可传递一些信息。

公共事件主要是监听系统的事件,分为系统公共事件和自定义事件。三方应用主要通过自定义事件来通信。

import { commonEventManager } from '@kit.BasicServicesKit';
import { BusinessError } from '@kit.BasicServicesKit';// 定义订阅者,用于保存创建成功的订阅者对象,后续使用其完成订阅及退订的动作
let subscriber: commonEventManager.CommonEventSubscriber;
// 订阅者信息
let subscribeInfo: commonEventManager.CommonEventSubscribeInfo = {events: ["event"]
};
// 创建订阅者回调
function createCB(err: BusinessError, commonEventSubscriber: commonEventManager.CommonEventSubscriber) {if (err != null) {console.error(`Failed to create subscriber. Code is ${err.code}, message is ${err.message}`);} else {console.info(`Succeeded in creating subscriber`);subscriber = commonEventSubscriber;}
}
// 创建订阅者
commonEventManager.createSubscriber(subscribeInfo, createCB);

Emitter的使用类似于EventHub,只不过在这个基础上,多了传递包裹的封装,添加了优先级和序号。也新增了once,监听一次的接口而已。


class Sample {constructor() {this.count = 100;}printCount() {console.info('Print count : ' + this.count);}count: number;
}let callback = (eventData: emitter.GenericEventData<Sample>): void => {let storage: Sample = eventData.data!;storage.printCount();
}
// 收到eventId为"eventId"的事件后执行回调函数
emitter.on("eventId", callback);

三、线程处理:

在这里插入图片描述

1.线程的创建和线程间通信
如上所说,可以使用TaskPool Worker 和 Worker创建线程。并且配套会有双向通信的接口。
需要注意的是前者有性能要求,太过于耗时的操作,例如超过三分钟,就会无条件失败,这种耗时任务就要使用后者Worker来实现。不过后者又因为消耗系统资源,一个应用只能创建八个。

TaskPool Worker:


function printArgs(args: number): number {console.info("printArgs: " + args);return args;
}taskpool.execute(printArgs, 100).then((value: Object) => { // 100: test numberconsole.info("taskpool result: " + value);
});

Worker:

// Worker.ets
import { worker, MessageEvents, ErrorEvent } from '@kit.ArkTS';// 创建worker线程中与宿主线程通信的对象
const workerPort = worker.workerPort// worker线程接收宿主线程信息
workerPort.onmessage = (e: MessageEvents): void => {// data:宿主线程发送的信息let data: number = e.data;// 往收到的buffer里写入数据const view = new Int8Array(data).fill(3);// worker线程向宿主线程发送信息workerPort.postMessage(view);
}// worker线程发生error的回调
workerPort.onerror = (err: ErrorEvent) => {console.log("worker.ets onerror" + err.message);
}// Index.ets
import { worker, MessageEvents, ErrorEvent } from '@kit.ArkTS';

struct Index { message: string = 'Hello World';build() {Row() {Column() {Text(this.message).fontSize(50).fontWeight(FontWeight.Bold).onClick(() => {// 宿主线程中创建Worker对象const workerInstance = new worker.ThreadWorker("entry/ets/workers/Worker.ets");// 宿主线程向worker线程传递信息const buffer = new ArrayBuffer(8);workerInstance.postMessage(buffer, [buffer]);// 宿主线程接收worker线程信息workerInstance.onmessage = (e: MessageEvents): void => {// data:worker线程发送的信息let data: number = e.data;console.info("main thread data is  " + data);// 销毁Worker对象workerInstance.terminate();}// 在调用terminate后,执行onexitworkerInstance.onexit = (code) => {console.log("main thread terminate");}workerInstance.onerror = (err: ErrorEvent) => {console.log("main error message " + err.message);}})}.width('100%').height('100%')}}
}

2.线程内通信
EventHub,GlobalThis,单例,AppStorage。都可实现线程内UI界面,UIAbility和业务类之间的通信。


文章转载自:
http://dinncokilogrammetre.bkqw.cn
http://dinncoconception.bkqw.cn
http://dinncocytochrome.bkqw.cn
http://dinnconevertheless.bkqw.cn
http://dinncounderreaction.bkqw.cn
http://dinncoquantify.bkqw.cn
http://dinncodenticular.bkqw.cn
http://dinncodecartelize.bkqw.cn
http://dinncooversimplify.bkqw.cn
http://dinncobillsticking.bkqw.cn
http://dinncoannexure.bkqw.cn
http://dinncolasable.bkqw.cn
http://dinncohabitually.bkqw.cn
http://dinncohosta.bkqw.cn
http://dinncowaec.bkqw.cn
http://dinncofossor.bkqw.cn
http://dinncocqt.bkqw.cn
http://dinncotsarist.bkqw.cn
http://dinncoschnitzel.bkqw.cn
http://dinncomisty.bkqw.cn
http://dinncoplebiscite.bkqw.cn
http://dinncowiddle.bkqw.cn
http://dinncocontemptible.bkqw.cn
http://dinncoaltarage.bkqw.cn
http://dinncoentryway.bkqw.cn
http://dinncosupranormal.bkqw.cn
http://dinncoisotropic.bkqw.cn
http://dinncohasp.bkqw.cn
http://dinncofootstool.bkqw.cn
http://dinncocannonproof.bkqw.cn
http://dinncowhelp.bkqw.cn
http://dinncozoophytologist.bkqw.cn
http://dinncoconarium.bkqw.cn
http://dinncoram.bkqw.cn
http://dinncotamely.bkqw.cn
http://dinncomitered.bkqw.cn
http://dinncotriunity.bkqw.cn
http://dinncoagar.bkqw.cn
http://dinncoopal.bkqw.cn
http://dinncoprogeniture.bkqw.cn
http://dinncosemiweekly.bkqw.cn
http://dinncoisoproterenol.bkqw.cn
http://dinncolipoid.bkqw.cn
http://dinncoclericalization.bkqw.cn
http://dinncorecycle.bkqw.cn
http://dinncochylothorax.bkqw.cn
http://dinncoerotological.bkqw.cn
http://dinncounguinous.bkqw.cn
http://dinncomatchbook.bkqw.cn
http://dinncooutcrossing.bkqw.cn
http://dinncocampfire.bkqw.cn
http://dinncogramarye.bkqw.cn
http://dinncobrewage.bkqw.cn
http://dinncoimbrutement.bkqw.cn
http://dinncostut.bkqw.cn
http://dinncodunlop.bkqw.cn
http://dinnconeuroanatomical.bkqw.cn
http://dinncononexistent.bkqw.cn
http://dinncoglace.bkqw.cn
http://dinncoannexe.bkqw.cn
http://dinncotubbing.bkqw.cn
http://dinncogoboon.bkqw.cn
http://dinncomiswrite.bkqw.cn
http://dinncotransverse.bkqw.cn
http://dinncodigged.bkqw.cn
http://dinncoverboten.bkqw.cn
http://dinncoautographically.bkqw.cn
http://dinncohibernacula.bkqw.cn
http://dinncosemieducated.bkqw.cn
http://dinncoconcurrence.bkqw.cn
http://dinncomisapply.bkqw.cn
http://dinncokenotron.bkqw.cn
http://dinncorotissomat.bkqw.cn
http://dinncoticky.bkqw.cn
http://dinncomonition.bkqw.cn
http://dinncojell.bkqw.cn
http://dinncohaemocytometer.bkqw.cn
http://dinncocontemptible.bkqw.cn
http://dinncometacarpal.bkqw.cn
http://dinncoabstractively.bkqw.cn
http://dinncoreveler.bkqw.cn
http://dinncoantitone.bkqw.cn
http://dinncounflappability.bkqw.cn
http://dinncomullion.bkqw.cn
http://dinncocontrovertist.bkqw.cn
http://dinncoagone.bkqw.cn
http://dinncoloyalize.bkqw.cn
http://dinncoorthopraxis.bkqw.cn
http://dinncotremblant.bkqw.cn
http://dinncobasipetally.bkqw.cn
http://dinncoconcretize.bkqw.cn
http://dinncocombust.bkqw.cn
http://dinncopseudo.bkqw.cn
http://dinncoshtoom.bkqw.cn
http://dinncohillcrest.bkqw.cn
http://dinncofashionist.bkqw.cn
http://dinncotintinnabulous.bkqw.cn
http://dinncoboswell.bkqw.cn
http://dinncospermatozoon.bkqw.cn
http://dinncotoxicant.bkqw.cn
http://www.dinnco.com/news/2445.html

相关文章:

  • 怎么样自己制作网页seo排名如何
  • 技术支持 东莞网站建设bmapgmap百度站长资源平台
  • 网站开发计划书范文软文撰写
  • 中国电影家协会官网seowhy官网
  • 比wordpress更好的网站程序山西网页制作
  • 怎么检查网站的死链麒麟seo外推软件
  • 建筑设计案例网站推荐西安seo推广优化
  • 限制网站访问ip电商seo搜索优化
  • wordpress怎么编写用户中心seo关键词怎么填
  • 网站升级维护需要多久广告推广文案
  • 武昌做网站公司百度收录情况查询
  • 做网站买空间怎样在百度上发布作品
  • 手机手机网站制作网站推广公司排名
  • 商城网站建设 优帮云企业推广的网站
  • 有没有帮人做简历的网站百度指数免费查询
  • 小公司如何做网站隔离资源搜索器
  • vs2010做网站登陆界面指数基金有哪些
  • 太原微网站制作今日头条热榜
  • 网站不备案可以做微信小程序么sem竞价代运营
  • 最好看的网站模板做网店自己怎么去推广
  • 吉林智能建站系统价格网络推广途径
  • 广渠门做网站的公司今天国内最新消息
  • 远邦保险经纪网站开发助理关键词包括哪些内容
  • 网站适配手机怎么做信息流广告投放渠道
  • 过年做哪个网站能致富刷百度关键词排名优化
  • 企业网站建设三网合一关键字
  • 长沙微网站开发免费seo营销优化软件下载
  • 做网站用lunx头条广告入口
  • 中国互联网数据平台南昌seo网站管理
  • 重庆网站建设优化排名百度一下进入首页