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

游戏钓鱼网站怎么做seo高级

游戏钓鱼网站怎么做,seo高级,wordpress 去优酷广告插件,可以制作app的软件上下文为何物 上下文在计算机科学领域是一个广泛存在的概念。是现代操作系统核心抽象概念之一。其本质是环境信息的结构化封装。 有过开发经验的都知道,当我们在一个系统上进行开发的时候,无论是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/529549.html

相关文章:

  • 早期做网站 如何推广哈尔滨seo整站优化
  • 乐山 网站建设小学生简短小新闻
  • 湛江有没有做网站的宁波seo排名优化培训
  • php网站建设流程国内真正的免费建站
  • 北京网站的网站建设公司项目推广平台有哪些
  • 信息服务平台网站名称短视频seo软件
  • 一级a做爰片免费观看网站英语seo
  • 门窗企业网站建设网红推广
  • 南山网站设计线百度文库官网首页
  • 局域网网站建设软件品牌宣传有哪些途径
  • 长沙公司建设网站抚州网络推广
  • 哪个网站做课件ppt比较好网站建设的六个步骤
  • 提升网站浏览量百度收录量查询
  • 小程序的模板广州网站优化方式
  • behance设计网站怎么念企业网络营销推广方案策划
  • 学网站建设app软文广告经典案例800字
  • 培训机构网站建设推广seo的作用
  • 论坛网站怎么做奉化云优化seo
  • 微信公众好第三方网站怎么做江门seo推广公司
  • 草桥做网站的公司百度客服中心
  • 创建自己的网页要多少钱成都移动seo
  • 广西建设培训中心网站游戏代理怎么做
  • 免费网站建设阿里云百度精准推广
  • 网站怎么优化关键词排名seo外链建设方法
  • 网络域名怎么查seo模拟点击
  • 湖北省建设工程质量协会网站产品推广软文500字
  • 贵州两学一做专题网站最全的搜索引擎
  • 北京响应式网站建设推荐江苏疫情最新消息
  • 如何用ps做网站首页的图片西安seo顾问公司
  • 静安西安网站建设上海百度公司总部