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

东莞设计企业网站的有哪些成都seo优化推广

东莞设计企业网站的有哪些,成都seo优化推广,如何在网站上做淘宝客推广,福州搜索优化实力上下文为何物 上下文在计算机科学领域是一个广泛存在的概念。是现代操作系统核心抽象概念之一。其本质是环境信息的结构化封装。 有过开发经验的都知道,当我们在一个系统上进行开发的时候,无论是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://www.dtcms.com/wzjs/397736.html

相关文章:

  • 用vs做音乐网站seo排名系统
  • .net core 做网站学网络运营在哪里学比较好
  • 网站维护费怎么做会计分录seo关键词排名优化
  • 网站改标题降权seo销售好做吗
  • 南京网站开发南京乐识正规搜索引擎优化策略包括
  • 做网站准备的资料优化步骤
  • 什么是网站建设的三次点击原则公司网站开发费用
  • 网站建设项目国内外分析报告年度关键词
  • 长沙制作网站公司吗怎么看百度关键词的搜索量
  • 深圳市营销型网站建设销售课程培训视频教程
  • 海口网站建设方案报价优化大师的优化项目有哪7个
  • 网上做分销代销哪个网站好优化方案的格式及范文
  • 桐梓县工程建设交易网站seo公司优化排名
  • 音频网站模板提升seo排名
  • 影院wordpress主题班级优化大师的功能有哪些
  • 支付网站怎么做广告投放公司
  • 唐山彩钢中企动力提供网站建设aso具体优化
  • 网上机械加工接单平台哪个好seo引擎搜索网站关键词
  • 网站运营管理主要内容统计工具
  • 学做烘焙的网站如何开通自己的网站
  • 外国优秀设计网站推荐商业推广软文范例
  • 网站备案成功后怎么操作seo的基本步骤顺序正确的是
  • 整形网站整站源码舆情网站直接打开怎么弄
  • 网站建设费记入科目百度指数网址
  • ps做游戏网站中国seo公司
  • 深圳网站设计 三把火科技今天国际新闻大事
  • 设计师参考效果图网站关键词优化一年的收费标准
  • 菏泽 做网站 多少钱专业seo整站优化
  • wordpress yousucaiseo服务公司招聘
  • 做结构图用什么网站公司调查公司