首页 > 其他分享 >深入理解华为鸿蒙的 Context

深入理解华为鸿蒙的 Context

时间:2024-12-19 15:53:20浏览次数:7  
标签:Context 鸿蒙 系统 华为 应用 组件 资源

深入理解华为鸿蒙的 Context

一、引言

在华为鸿蒙操作系统里,Context 是极为关键的概念。它如同应用运行的信息中心,为应用提供环境信息、资源访问途径以及与系统交互的接口,对构建优质鸿蒙应用至关重要。

二、Context 的基本概念与作用

(一)定义与核心功能

Context 代表应用运行的上下文环境,封装应用相关信息,像资源、配置、运行状态以及与系统服务交互的能力等。例如,它能让应用获取各种资源,包括字符串、图片、布局资源等,方便构建 UI 和实现业务逻辑。同时,它为应用与系统服务(如窗口管理、任务调度)通信提供接口,使应用可请求系统服务支持并响应系统事件。

(二)资源访问

在鸿蒙应用开发中,资源管理借助 Context 很便捷。比如获取资源管理器:

ResourceManager resourceManager = context.getResourceManager();

加载字符串资源:

String string = context.getString(resourceId);

这利于应用国际化与多语言支持,可依系统语言动态切换字符串资源。

(三)与系统服务交互

鸿蒙有诸多系统服务,如 AbilityManagerService 管理应用组件生命周期与交互,WindowManagerService 负责窗口操作。Context 是应用与系统服务的桥梁,通过它获取系统服务实例并调用方法完成系统级操作。如创建窗口:

WindowManager windowManager = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);
WindowConfiguration windowConfiguration = new WindowConfiguration();
// 设置窗口属性
windowConfiguration.setType(WindowConfiguration.TYPE_APPLICATION);
windowConfiguration.setWidth(600);
windowConfiguration.setHeight(800);
windowManager.createWindow(windowConfiguration);

三、Context 的类型与层级关系

(一)应用级 Context

应用启动时创建应用级 Context,贯穿应用生命周期。在应用入口(如 Ability 类 onCreate 方法)可获取:

public class MyAbility extends Ability {
    @Override
    public void onCreate() {
        super.onCreate();
        Context applicationContext = getApplicationContext();
        // 后续操作
    }
}

它有全局资源和系统服务访问权限,用于创建管理应用组件,可传递给其他组件,如创建全局数据库连接:

public class DatabaseManager {
    private static DatabaseConnection databaseConnection;

    public static void init(Context context) {
        if (databaseConnection == null) {
            databaseConnection = new DatabaseConnection(context);
        }
    }

    public static DatabaseConnection getConnection() {
        return databaseConnection;
    }
}

在应用启动时调用 DatabaseManager.init(applicationContext) 初始化。

(二)组件级 Context

鸿蒙应用组件(Ability、Page、Component 等)有对应组件级 Context。它局部性更强,用于组件自身资源访问与系统服务交互,权限功能受限。如 Page 组件的 Context 用于页面资源加载与相关系统服务调用。它与组件生命周期紧密相连,组件创建时创建,销毁时销毁,利于模块化开发与代码维护。

(三)层级关系与作用域

组件级 Context 基于应用级 Context 衍生,继承部分特性功能,作用域更具体有限。应用级 Context 是根环境,管理协调组件级 Context。资源访问时,组件级 Context 先找自身局部资源,找不到再沿层级找应用级 Context 资源。

标签:Context,鸿蒙,系统,华为,应用,组件,资源
From: https://www.cnblogs.com/cnblogzzy/p/18617406

相关文章

  • 【路由交换】华为ENSP配置网口桥接
    ENSP桥接物理网口,需要创建Cloud云对象,并在云对象中完成接口绑定配置绑定物理网口绑定UDP端口配置端口映射模拟器和cloud对象连接网络连接测试......
  • 【路由交换】华为交换机和路由器配置DHCP和DHCP中继
    1.DHCP原理和实验拓扑1.1.DHCP原理DHCP一共有四个阶段:DHCPDiscover、DHCPOffer、DHCPRequest、DHCPACKDHCPDiscover:发送DHCPDiscover消息,寻找DHCPServer,表示自己需要获取一个IP地址DHCPOffer:响应所收到的DHCPDiscover消息,把准备提供的IP地址携带在DHCPOffer消息中......
  • uniapp 极速上手鸿蒙开发
    uniapp极速上手鸿蒙开发uniapp团队与版本4.28.2024092502起,支持鸿蒙应用开发,现在是4.36.2024112817,同时支持鸿蒙应用和元服务开发了。我们现在上手感受一下环境配置HBuilderX4.24+下载地址DevEcoStudioHBuilderX4.24+要求DevEco-Studio5.0.3.400+,HBuilde......
  • ArkUI 的声明式 UI 编程与状态管理:构建高效鸿蒙应用
    ArkUI的声明式UI编程与状态管理:构建高效鸿蒙应用在鸿蒙应用开发领域,ArkUI脱颖而出,其独特的声明式UI编程与高效的状态管理机制,为开发者开辟了一条便捷、高效的开发之路,重塑了移动应用的构建方式。声明式UI编程,摒弃传统命令式繁琐操作,宛如一位精细的画师,用简洁笔触勾勒界......
  • 鸿蒙+next+基于@xwf+image_preview+V1
    鸿蒙next基于@xwf/image_preview(V1.0.1)开发自己的功能@xwf/image_preview(V1.0.1)的链接为:https://ohpm.openharmony.cn/#/cn/detail/@xwf%2Fimage_preview/v/1.0.1前提背景图片预览我们使用到了@xwf/image_preview库,用于预览图片可以进行手势放大,但是我们需要以弹窗的形......
  • 「Mac畅玩鸿蒙与硬件45」UI互动应用篇22 - 评分统计工具
    本篇将带你实现一个评分统计工具,用户可以对多个选项进行评分。应用会实时更新每个选项的评分结果,并统计平均分。这一功能适合用于问卷调查或评分统计的场景。关键词UI互动应用评分统计状态管理数据处理多目标评分一、功能说明评分统计工具允许用户对多个选项(如电影、......
  • VMware环境下,同时烧录固件检测不到设备如何解决?触觉智能鸿蒙开发板演示
    本文介绍PC电脑端运行VMware环境下,同时烧录固件检测不到设备的解决方法。触觉智能PurplePiOH鸿蒙开发板演示,搭载了瑞芯微RK3566芯片,类树莓派设计,Laval官方社区主荐,已适配全新OpenHarmony5.0Release系统!PC端烧录固件时提示没有发现设备按照各型号烧录手册中进入loader模式的操......
  • 鸿蒙Flutter之线程分析
    鸿蒙Flutter之线程分析线程顺序掌握分析工具的使用后,便能去抓取Flutter应用的trace。trace中包含了应用运行期间的所有线程,需要先收藏下图的线程,以及按照图中线程的顺序去排序,才能更好的分析Flutter应用性能。下图每个线程的上方用数字标识了其排列的位置。trace收藏线程,后收......
  • 鸿蒙Flutter使用ohos_videocompressor实现视频压缩
    鸿蒙Flutter使用ohos_videocompressor实现视频压缩介绍videoCompressor是一款ohos高性能视频压缩器。目前实现的能力:支持视频压缩使用方法:有两种方式可以下载本工程:1.开发者如果想要使用本工程,可以使用git命令gitclonehttps://gitee.com/openharmony-sig/ohos_videocom......
  • 鸿蒙 next arkts 实现防抖节流功能
    鸿蒙next-arkts-实现防抖节流功能ClickUtilexportclassClickUtil{privateconstructor(){}privatestaticthrottleTimeoutID:number;//节流timeoutIDprivatestaticflag:boolean=false;//节流flag,true=已经进入执行状态了privatestaticdebounc......