StageApplication初始化支持以下三种方式

1. 通过继承StageApplication的方式进行初始化

import ohos.stage.ability.adapter.StageApplication;public class HiStageApplication extends StageApplication {@Overridepublic void onCreate() {super.onCreate();}
}

2. 继承Android原生Application方式,在onCreate方法中创建StageApplicationDelegate实例进行初始化

import android.app.Application;
import ohos.stage.ability.adapter.StageApplicationDelegate;public class HiStageApplication extends Application {private StageApplicationDelegate appDelegate_ = null;@Overridepublic void onCreate() {super.onCreate();appDelegate_ = new StageApplicationDelegate();appDelegate_.initApplication(this);}
}

3. 在Activity中创建StageApplicationDelegate实例进行初始化

import android.app.Activity;
import ohos.stage.ability.adapter.StageApplicationDelegate;public class EntryEntryAbilityActivity extends Activity {private StageApplicationDelegate appDelegate_ = null;@Overrideprotected void onCreate(Bundle savedInstanceState) {appDelegate_ = new StageApplicationDelegate();appDelegate_.initApplication(this.getApplication());super.onCreate(savedInstanceState);}
}

通过原生Activity拉起Ability并传递参数

使用原生Activity拉起Ability时,需使用原生应用的startActivity方法,参数的传递需要通过Intent中的putExtra()进行设置,目前有两种方式进行参数的传递,具体如下:

1. 使用手动方式

参数格式

key值为params
value为json格式

{"params":[{"key":键,"type":参数类型值,"value":值},{...}]
}
示例代码
  • Java
public class EntryEntryAbilityActivity extends AppCompatActivity {@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);Intent intent = new Intent();intent.setClass(this, EntryEntryAbilityTwoActivity.class);intent.putExtra("params","{\"params\":[{\"key\":\"keyfirst\",\"type\":1,\"value\":\"keyvalue\"}," +"{\"key\":\"keysecond\",\"type\":9,\"value\":\"2.3\"}," +"{\"key\":\"keythird\",\"type\":5,\"value\":\"2\"}," +"{\"key\":\"keyfourth\",\"type\":10,\"value\":\"test\"}]}");startActivity(intent);}
}
  • ArkTS
# xxx.ets
export default class EntryAbility extends UIAbility {onCreate(want: Want, launchParam: AbilityConstant.LaunchParam): void {console.log("value = " + want.parameters?.keyfirst)console.log("value = " + want.parameters?.keysecond)console.log("value = " + want.parameters?.keythird)console.log("value = " + want.parameters?.keyfourth)}onWindowStageCreate(windowStage: window.WindowStage): void {...}
...
}
支持的参数类型列表
参数类型参数类型值
boolean1
int5
double9
string10

2. WantParams工具类

推荐使用。

参数格式

putExtra中的key值为"params",对应的value为WantParams字符串。

    WantParams wantParams = new WantParams();wantParams.addValue("key1", "value").addValue("key2", 123).addValue("key3", false)...
示例代码
  • Java
    此示例展示了在启动一个新的 Ability 时,如何通过 WantParams 实现参数传递。具体涉及使用 WantParams 中的 addValue、getValue 和 toWantParamsString 接口,完成数据的自定义、获取和修改。
public class MainAbilityActivity extends StageActivity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);Intent intent = new Intent();intent.setClass(this, EntryEntryAbilityActivity.class);// 设置自定义数据WantParams wantParams = new WantParams();wantParams.addValue("stringKey", "normal").addValue("intKey", -2147483648).addValue("doubleKey", -6.9).addValue("boolKey", true).addValue("arrayKey", new boolean[] { false, true }).addValue("wantParamsKey",new WantParams().addValue("stringKey2", "It's me."));// 获取指定的键对应的值并修改Object obj = wantParams.getValue("stringKey");if (obj instanceof String) {wantParams.setValue("stringKey", "new string value");}obj = wantParams.getValue("intKey");if (obj instanceof Integer) {wantParams.setValue("intKey", 123);}obj = wantParams.getValue("arrayKey");if (obj instanceof boolean[]) {wantParams.setValue("arrayKey", new boolean[] { false, false });}obj = wantParams.getValue("wantParamsKey");if (obj instanceof WantParams) {wantParams.setValue("wantParamsKey", new WantParams().addValue("intKey", 999));}intent.putExtra("params", wantParams.toWantParamsString());startActivity(intent);}
}
  • ArkTS
# xxx.ets
export default class EntryAbility extends UIAbility {onCreate(want: Want, launchParam: AbilityConstant.LaunchParam): void {console.log("value = " + want.parameters?.stringKey)console.log("value = " + want.parameters?.intKey)console.log("value = " + want.parameters?.doubleKey)console.log("value = " + want.parameters?.boolKey)console.log("value = " + JSON.stringify(want.parameters?.arrayKey))console.log("value = " + JSON.stringify(want.parameters?.wantParamsKey))}
}
支持的参数类型

WantParams支持的类型有:
boolean、int、float、double、String、WantParams、boolean[]、int[]、float[]、double[]、String[]。
WantParams提供的接口详细如下:

接口返回值参数功能
addValueWantParamsString key, boolean value为WantParams添加"String"类型的key,"boolean"类型的值value。
addValueWantParamsString key, int value为WantParams添加"String"类型的key,"int"类型的值value。
addValueWantParamsString key, double value为WantParams添加"String"类型的key,"double"类型的值value。
addValueWantParamsString key, String value为WantParams添加"String"类型的key,"String"类型的值value。
addValueWantParamsString key, boolean[] value为WantParams添加"String"类型的key,"boolean[]"类型的值value。
addValueWantParamsString key, int[] value为WantParams添加"String"类型的key,"int[]"类型的值value。
addValueWantParamsString key, double[] value为WantParams添加"String"类型的key,"double[]"类型的值value。
addValueWantParamsString key, String[] value为WantParams添加"String"类型的key,"String[]"类型的值value。
addValueWantParamsString key, WantParams value为WantParams添加"String"类型的key,"WantParams"类型的值value。
getValueObjectString key获取键值为key的属性值,如果键值不存在则返回null。
toWantParamsStringString-将WantParams对象转换为Json字符串。

注意事项

  • addValue和getValue中的key不能包含特殊字符;如\t、\r、\n等。
  • 在使用手动方式(非WantParams)自定义字符串时,key和value均不能包含特殊字符。
  • array和object不支持使用手动方式进行使用。
  • double的小数点后有效小数位为6位。

用启动Ability的方式拉起原生Activity

每一个Ability对应一个StageActivity,启动Ability实际是拉起对应的StageActivity。

所以将原生Activity按照上文中Ability对应StageActivity的规则命名,可以用启动Ability的方式拉起原生Activity。

// xxx.etslet want: Want = {bundleName: 'com.example.helloworld',moduleName: 'entry', //小写abilityName: 'Jump', //首字母大写parameters:{id:1,name:'ArkUI-X'} //可选参数};let context = getContext(this) as common.UIAbilityContext;context.startAbility(want, (err, data) => {}); 
// xxx.java
public class EntryJumpActivity extends AppCompatActivity { //命名:moduleName + abilityName + “Activity”private static final String WANT_PARAMS = "params";@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_jump);Intent intent = getIntent();String params = "";if (intent != null) {params = intent.getStringExtra(WANT_PARAMS);}}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/news/911685.shtml
繁体地址,请注明出处:http://hk.pswp.cn/news/911685.shtml
英文地址,请注明出处:http://en.pswp.cn/news/911685.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

主从复制的优势是什么?如好搭建一个主从复制呢?

引言: 最近因为时间缘故,学校,比赛,面试很久没有更新了,现在开始将会持续更新!!!欧克。我们往下看: 概述: 主从复制是指将主数据库的DDL和DML操作通过二进制…

Linux Shell脚本中basename和dirname的详细用法教程

在Linux Shell脚本中,basename和 dirname是两个非常实用的命令,常用于处理文件路径和名称。本文将详细介绍这两个命令的用法,并提供丰富的示例代码,以帮助您更好地理解和应用它们。 一、basename命令 1.1 基本用法 basename命令…

3D世界里的“盗梦空间”!在方块里再造一个世界?高级特效get✅

有没有想过,游戏里的镜子、传送门、或者屏幕上播放的实时3D动画是怎么实现的? 答案就是一项黑科技——渲染目标(Render Targets)。它允许我们不直接渲染到屏幕,而是“偷偷地”渲染到一张幕后的贴图上,然后…

浅析一种基于深度学习算法的维吾尔文OCR技术的实现原理及其应用场景

维吾尔文OCR技术是一种基于人工智能和深度学习技术的维吾尔文光学字符识别工具,能够快速、准确地将印刷体或手写体维吾尔文转换为可编辑、可搜索的数字化文本。该技术适用于政府、教育、出版、金融等多个行业,助力维吾尔文信息的高效处理与智能化管理。 …

如何使用MQTTX软件来进行MQTT协议的测试

下载MQTTX软件 下载地址及说明文档开始使用 - MQTTX 文档,比较详细 为什么使用MQTTX 何时要使用MQTTX软件呢?用来检测物联网模块上云的数据就很方便,当然云上如果有日志系统的话也是可以用的。 物联网模块,以利尔达模块为例 NT26-KCN系列…

ELK 和 OpenShift 中的 EFK

ELK 和 OpenShift 中的 EFK 确实是同类日志解决方案的不同实现,核心功能相似但组件略有差异。以下是详细对比和解释: 1. ELK vs EFK:核心区别 组件ELK 栈EFK 栈(OpenShift 默认)日志收集Logstash(Java 实现…

Python UDP Socket 实时在线刷卡扫码POS消费机门禁控制服务端示例源码

本示例使用的设备:https://item.taobao.com/item.htm?spma21dvs.23580594.0.0.1d292c1bk8Qc9r&ftt&id17021194999 一、服务端绑定IP开启UDP端口接收消费机提交的请求 import sys import os import socket import time import datetimeIpList[] if sys.pl…

对于高考边界的理解以及未来就业层级的学习与思考

目录 一、2024年高考全国多少考生,文化课,文科理科,分别总分多少分?清北得多少分能上?二、1342万人里面,有多少人能上清北,多少能上985,多少能上211,多少能上二本&#x…

JVM调优实战 Day 4:JVM类加载机制

【JVM调优实战 Day 4】JVM类加载机制 文章内容 在Java虚拟机(JVM)的运行过程中,类加载机制是整个程序启动和运行的基础。它决定了Java类是如何被动态加载到JVM中,并为后续的字节码执行做好准备。理解JVM类加载机制不仅有助于我们…

R 语言中的判断语句

R 语言中的判断语句 在R语言编程中,判断语句是执行条件逻辑的基础。它们允许程序根据特定的条件执行不同的代码块。本文将深入探讨R语言中的几种常见判断语句,包括if语句、if-else语句和switch语句,并探讨它们的用法和场景。 1. if语句 if…

从设备自动化到智能管控:MES如何赋能牛奶饮料行业高效生产?

万界星空科技全新推出的:新一代智能化MES系统,深度融合AI大数据技术,实现生产全流程可视化、智能排产、实时质量追溯与设备互联,助力企业降本增效30%。 现开放免费试用名额,体验智能化生产管理的高效与便捷&#xff01…

TDengine 技术参数配置大全

1. 背景 TDengine 的 taos.cfg 中配置项及使用 SQL 命令 alter 修改的系统变量之间的关系如何,哪些是持久存储项,哪些设置是临时项,这章将详细说明。 本文是技术参考资料,请收藏。 2.定义 1. 全局配置参数 全局配置参数&#…

无人机神经网络模块运行与技术难点

一、神经网络模块的运行方式 1. 分层处理架构 感知层 多模态数据融合:通过八元数卷积网络(OCNN)统一处理LiDAR、摄像头、IMU等异构传感器数据,将点云坐标(x/y/z)、图像RGB与光流信息编码至8维虚部&#…

前端react框架实现打包时间动态加入配置展示在指定页面

注意: 当前方法特定为 create-react-app 构建框架,其他的构建流程不同,不能直接照搬 react-scripts 的方式。 ✅ 目标: 在 React 打包(build)时,自动将当前时间写入代码中某个变量或 console…

原子操作(CAS)

原子操作 原子操作原理什么是原子操作?原子性原子变量相关接口内存序 shared_ptr的实现 原子操作原理 什么是原子操作? 原子操作其实就是指在多线程的环境下,确保对共享变量的操作不会被干扰,从而避免了竞态条件。 我们都知道&…

马克思主义基本原理期末复习下

二十、资本的原始积累 所谓资本原始积累,就是以暴力手段使生产者与生产资料分离资本快速集中于少数人手中,资本主义得以快速发展的历史过程。具体过程其一,用暴力手段夺取农民的土地,如英国圈地运动在国外建立殖民地,…

体育数据api接口,足球api篮球api电竞api,比赛赛事数据api

在体育行业,数据驱动一切,从内容分发到竞猜预测,从用户互动到商业变现,背后少不了一个关键词:数据接口(API)。无论是实时比分、比赛事件、历史统计,还是球员详情、战绩排名&#xff…

Harmony 状态监听 @Monitor和@Computed

Monitor与Computed装饰器在ArkUI状态管理中的协同应用 一、装饰器概述 1. Monitor装饰器 Monitor是ArkUI状态管理V2中的核心装饰器,用于深度监听状态变量的修改: 支持监听嵌套类属性、多维数组项和对象数组中的指定项变化能够获取变化前后的值进行比…

同济大学多模态感知具身导航全面综述

作者: I-Tak Ieong, Hao Tang 单位:同济大学计算机学院,北京大学计算机学院 论文标题: Multimodal Perception for Goal-oriented Navigation: A Survey 论文链接:https://arxiv.org/pdf/2504.15643 主要贡献 基于…

2025年CCF先进音频技术竞赛

由中国计算机学会主办、CCF语音对话与听觉专委会承办、语音之家协办、华为终端有限公司赞助的CCF先进音频技术大赛正式启动。大赛旨在推动国内高等院校及科研院所在音频技术领域的专业人才培养,支持学生科技创新,选拔优秀人才。 赛事官网:ht…