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

做电商看的网站有哪些内容公司名字大全免费测吉凶

做电商看的网站有哪些内容,公司名字大全免费测吉凶,版面设计绘画,阿里云部署网站教程上下文为何物 上下文在计算机科学领域是一个广泛存在的概念。是现代操作系统核心抽象概念之一。其本质是环境信息的结构化封装。 有过开发经验的都知道,当我们在一个系统上进行开发的时候,无论是Android,HarmonyOs,Linux 等等&a…

上下文为何物

上下文在计算机科学领域是一个广泛存在的概念。是现代操作系统核心抽象概念之一。其本质是环境信息的结构化封装

有过开发经验的都知道,当我们在一个系统上进行开发的时候,无论是Android,HarmonyOs,Linux 等等,从顶层的全系统,到窗口系统,服务系统等子系统,全部存在一个叫 上下文的 概念。 我们首先了解下这个概念,以及其设计意义,因为这个上下文,应该是很多领域程序工程中,特定问题的通用的解决方案。了解这个一通百通。见到了新的也不怵。

更有意思的是,如果您之后要参与大型开发,也可以搞自己的上下文概念。无非是系统的上下文涉及系统的环境信息,而您的上下文可能涉及的是业务信息。

上下文指的是,某个操作,对象或者模块在运行时所依赖的环境信息集合。例如在桌面系统中,当用户右键点击文件时,上下文菜单会根据文件类型显示不同选项(如 “解压”“编辑”),这里的 “文件类型” 和 “用户操作场景” 就是上下文的一部分。

上下文通常包含以下要素

  • 状态数据:如当前用户身份,系统主题,网络连接状态等。
  • 配置参数:应用程序的个性化参数,或者默认的系统参数。
  • 环境信息:实际运行中的物理环境(设备的类型),和逻辑环境(如当前所在界面,操作权限等)。
  • 关联对象:与当前操作相关的其他对象或者资源等(如打开的文件,选中的文本等)

在实现上, 上下文就是一个横向小模块,或者大模块都可以访问到的,公共信息。这个信息实例数量有限但可以共享。

但是随着工程越来越复杂,上下文会变得越来越臃肿,为了便于维护和拆分,也不得不在实现上实现局部的模块化,例如手机系统中的权限管理,我们调用的时候会是这样

context.getPermissionManager().阿巴阿巴的函数继续调用 
//会发现权限管理被拆了,拆成了子模块,然后由context获取。

我们现在的操作系统没有简单的,上下文很复杂也很正常。我们大致记得住可以通过上下文获取什么做到什么就可以了。遇到了问题有思路,尽量不用上网查。

我们这里以顶层设计的视角,假设您要研发一个手机系统的UI框架,并且选定了实现的模型之后,那么您的上下文应该涵盖什么呢?了解了能力边界,有利于您在业务需求之初,准确的评估实现方式以及研发成本。

在实现方面划分模块分类(下图为思路,与实际有出入)

上述模块需要的功能均可直接通过Context,直接或者间接的来访问。

ArkUI应用上下文-Context

上文中已经对Context有个大致的思想上的了解,接下来看看HarmonyOS实现框架-ArkUI中应用上下文。

这里的Context分类比较多,我们在这里着重看下各大Context的关系。

Context的获取方式

各大context已经被各大组件记录为一个变量,可以直接使用。在使用的时候,自己输入this.contex大致都有。像上图中右边涉及的那些类中,都可以通过this.context来获取。

Context分类

基类Context中记录了一些基础能力,这些能力在任何子类context都得到了继承,并可以使用。

其基础信息如图所示

基础的Context主要提供了,资源管理, 当前应用信息,文件路径管理,文件分区几大能力。子类则在基础之上扩展了其他的使用比较多的能力。

应用文件路径(应用沙箱涉及到的目录)

在这里我们有必要对文件路径进行整理,以便于以后用到了心里大概有个谱。具体参考官方文档:

文档中心

各类context目录相关字段获取值及说明

属性

说明

ApplicationContext 获取的值

AbilityStageContext,UIAbilityContext,ExtensionContext获取值

bundleCodeDir

安装包目录

<路径前缀>/el1/boundle

<路径前缀>/el1/boundle

cacheDir

缓存目录

<路径前缀>/<加密等级>/base/cache

<路径前缀>/<加密等级>/base/haps/<module-name>/cache

filesDir

文件目录

<路径前缀>/<加密等级>/base/files

<路径前缀>/<加密等级>/base/haps/<module-name>/files

preferenceDir

参数配置目录

<路径前缀>/<加密等级>/base/preferences

<路径前缀>/<加密等级>/base/haps/<module-name>/references

tempDir

临时目录

<路径前缀>/<加密等级>/base/temp

<路径前缀>/<加密等级>/base/haps/<module-name>/temp

databaseDir

数据库目录

<路径前缀>/<加密等级>/database

<路径前缀>/<加密等级>/database/<module-name>

distributedFilesDir

分布式文件目录

<路径前缀>/el2/distributedFiles

<路径前缀>/el2/distributedFiles

resourceDir

资源目录

-

<路径前缀>/el1/boundle/<module-name>/resource/resfile

cloudFileDir

云文件目录

<路径前缀>/el2/cloud

<路径前缀>/el2/cloud

代码如下

this.applicationContext = this.context.getApplicationContext();
this.uiAbilityContext = this.context;hilog.debug(0x0000, 'testTag', 'bundleCodeDir applicationContext=%s, uiAbilityContext=%s', this.applicationContext.bundleCodeDir, this.uiAbilityContext?.bundleCodeDir);hilog.debug(0x0000, 'testTag', 'cacheDir applicationContext=%s, uiAbilityContext=%s', this.applicationContext.cacheDir, this.context.cacheDir);hilog.debug(0x0000, 'testTag', 'filesDir applicationContext=%s, uiAbilityContext=%s', this.applicationContext.filesDir, this.context.filesDir);hilog.debug(0x0000, 'testTag', 'preferenceDir applicationContext=%s, uiAbilityContext=%s', this.applicationContext.preferencesDir, this.context.preferencesDir);hilog.debug(0x0000, 'testTag', 'tempDir applicationContext=%s, uiAbilityContext=%s', this.applicationContext.tempDir, this.context.tempDir);hilog.debug(0x0000, 'testTag', 'databaseDir applicationContext=%s, uiAbilityContext=%s', this.applicationContext.databaseDir, this.context.databaseDir);hilog.debug(0x0000, 'testTag', 'distributedFilesDir applicationContext=%s, uiAbilityContext=%s', this.applicationContext.distributedFilesDir, this.context.distributedFilesDir);hilog.debug(0x0000, 'testTag', 'cloudFileDir applicationContext=%s, uiAbilityContext=%s', this.applicationContext.cloudFileDir, this.context.cloudFileDir);// 写数据案例let filesDir = this.uiAbilityContext.filesDir + '/test1.txt'let file = fileIo.openSync(filesDir, fileIo.OpenMode.READ_WRITE | fileIo.OpenMode.CREATE)let writeLength = fileIo.writeSync(file.fd, 'Hello word!')// 读数据案例let arrayBuffer = new ArrayBuffer(1024)let readOption : ReadOptions = {offset : 0,length : arrayBuffer.byteLength}let readLength = fileIo.readSync(file.fd, arrayBuffer, readOption)// 将ArrayBuffer内的内容转换为Bufferlet buf = buffer.from(arrayBuffer, 0, readLength)hilog.debug(0x0000, 'testTag', 'wright file content = %s', buf.toString())fileIo.closeSync(file)

获取其他Module中的context

可以通过调用createModuleContext(context : Context, modueName : string)方法,来获取其他模块的Context。并可以通过这个Context获取到其他模块的资源。

applicationContext.crateModuleContext(this.context, 'entry').then(data:  common.Context) {console.info('crateModuleContext=${JSON.tringify(data)}')}.catch((err : BusinessError) => {console.error('createModuleContext error! code=${err.code}, err msg=${err.message}')})

订阅进程内生命周期变化

let abilityLifecycleCallback: AbilityLifecycleCallback = {// 当UIAbility创建时被调用onAbilityCreate(uiAbility) {hilog.info(DOMAIN_NUMBER, TAG, `onAbilityCreate uiAbility.launchWant: ${JSON.stringify(uiAbility.launchWant)}`);},// 当窗口创建时被调用onWindowStageCreate(uiAbility, windowStage: window.WindowStage) {hilog.info(DOMAIN_NUMBER, TAG, `onWindowStageCreate uiAbility.launchWant: ${JSON.stringify(uiAbility.launchWant)}`);hilog.info(DOMAIN_NUMBER, TAG, `onWindowStageCreate windowStage: ${JSON.stringify(windowStage)}`);},// 当窗口处于活动状态时被调用onWindowStageActive(uiAbility, windowStage: window.WindowStage) {hilog.info(DOMAIN_NUMBER, TAG, `onWindowStageActive uiAbility.launchWant: ${JSON.stringify(uiAbility.launchWant)}`);hilog.info(DOMAIN_NUMBER, TAG, `onWindowStageActive windowStage: ${JSON.stringify(windowStage)}`);},// 当窗口处于非活动状态时被调用onWindowStageInactive(uiAbility, windowStage: window.WindowStage) {hilog.info(DOMAIN_NUMBER, TAG, `onWindowStageInactive uiAbility.launchWant: ${JSON.stringify(uiAbility.launchWant)}`);hilog.info(DOMAIN_NUMBER, TAG, `onWindowStageInactive windowStage: ${JSON.stringify(windowStage)}`);},// 当窗口被销毁时被调用onWindowStageDestroy(uiAbility, windowStage: window.WindowStage) {hilog.info(DOMAIN_NUMBER, TAG, `onWindowStageDestroy uiAbility.launchWant: ${JSON.stringify(uiAbility.launchWant)}`);hilog.info(DOMAIN_NUMBER, TAG, `onWindowStageDestroy windowStage: ${JSON.stringify(windowStage)}`);},// 当UIAbility被销毁时被调用onAbilityDestroy(uiAbility) {hilog.info(DOMAIN_NUMBER, TAG, `onAbilityDestroy uiAbility.launchWant: ${JSON.stringify(uiAbility.launchWant)}`);},// 当UIAbility从后台转到前台时触发回调onAbilityForeground(uiAbility) {hilog.info(DOMAIN_NUMBER, TAG, `onAbilityForeground uiAbility.launchWant: ${JSON.stringify(uiAbility.launchWant)}`);},// 当UIAbility从前台转到后台时触发回调onAbilityBackground(uiAbility) {hilog.info(DOMAIN_NUMBER, TAG, `onAbilityBackground uiAbility.launchWant: ${JSON.stringify(uiAbility.launchWant)}`);},// 当UIAbility迁移时被调用onAbilityContinue(uiAbility) {hilog.info(DOMAIN_NUMBER, TAG, `onAbilityContinue uiAbility.launchWant: ${JSON.stringify(uiAbility.launchWant)}`);}};// 获取应用上下文let applicationContext = this.context.getApplicationContext();try {// 注册应用内生命周期回调this.lifecycleId = applicationContext.on('abilityLifecycle', abilityLifecycleCallback);} catch (err) {let code = (err as BusinessError).code;let message = (err as BusinessError).message;hilog.error(DOMAIN_NUMBER, TAG, `Failed to register applicationContext. Code is ${code}, message is ${message}`);}

文章转载自:

http://JTIDBcoq.wqwbj.cn
http://pPompiL8.wqwbj.cn
http://FKRYjkjD.wqwbj.cn
http://WVLTjQOl.wqwbj.cn
http://51SsY9GE.wqwbj.cn
http://n0iC2v5z.wqwbj.cn
http://7F5KmN3W.wqwbj.cn
http://MwydLPwK.wqwbj.cn
http://0fcsYxDa.wqwbj.cn
http://3bNVTQfs.wqwbj.cn
http://KDIiWEaY.wqwbj.cn
http://roySclQk.wqwbj.cn
http://iNkFyMvz.wqwbj.cn
http://tObwXUHj.wqwbj.cn
http://XuaPZ6Le.wqwbj.cn
http://dG2UcNYO.wqwbj.cn
http://9vi9FA2x.wqwbj.cn
http://qFIh5fWJ.wqwbj.cn
http://xDnNv1Yd.wqwbj.cn
http://bzji9nRe.wqwbj.cn
http://FHlA1Vqy.wqwbj.cn
http://Cj6yUTvJ.wqwbj.cn
http://6HaMXJtF.wqwbj.cn
http://kP0RhUyw.wqwbj.cn
http://Ck3HalA2.wqwbj.cn
http://2QvAoVLm.wqwbj.cn
http://LpStiIH8.wqwbj.cn
http://m40Qijhq.wqwbj.cn
http://R1XwIGvu.wqwbj.cn
http://U3TBKTPm.wqwbj.cn
http://www.dtcms.com/wzjs/664145.html

相关文章:

  • 广州专业网站建设哪家好wordpress能找工作吗
  • 网站建设的费用记什么科目树莓派wordpress穿透
  • 霍邱网站设计公司购物网站的建设意义
  • 怎样创建网站域名平台wordpress主题 付费
  • 构建网站的安全网络搭建视频教程
  • 中国大型网站手机wap网站 设计
  • 温江建设网站ai做的网站怎么切图
  • 网站轮播图片psd源码怎么查网站的域名备案
  • 专业3合1网站建设公司群晖下搭建wordpress
  • 公司备案号查询网站网址大全123手机版下载
  • 广州市研发网站建设平台主机宝怎么设置网站主页
  • 滕州网站建展会宣传推广计划
  • 绵阳网站改版个人可以建立网站吗
  • 杭州集团网站建设做设计的一般在什么网站找素材
  • 深圳建设注册中心网站视频网站开发教程
  • 网站板块策划wordpress获取文章第一张图片
  • 国产做性直播视频网站克隆网站到wordpress修改
  • 自学制作网站难不难怎么设计logo图片
  • 建一个企业网站多少钱网站运营分析报告
  • 网站开发公司电话省建设厅网站建筑材料备案申请
  • 泰州建设网站wordpress logo制作教程
  • 网站建设需要什么教材末备案网站如何做cdn
  • 上海网站设计推荐刻科技网站首页
  • 餐饮业建设网站意义网络营销是什么的一种市场营销方式
  • 国外做健康的网站一个公司的官网怎么做
  • 杭州网站改版公司电话忻州新闻最新消息今天
  • 网站加速cdn自己做电子商务网站建设实训报告
  • 国内简洁网站设计公司变更地址需要多少钱
  • 怎么自己注册网站平台了网站开发 360浏览器
  • 成都建设公司网站万州电商网站建设