HarmonyOS-Service服务开发(一)

文章目录

      • 创建新项目
      • 启动Service
        • ets获取service的bundleName
      • DataAbility开发指导
        • 开发Data步骤
          • 创建Data

创建新项目

ServiceAbility开发指导

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
config.json中也有配置出现
在这里插入图片描述

启动Service

ets获取service的bundleName

项目的bundleName
在这里插入图片描述

service的bundleName
在这里插入图片描述
这里serviceAbility的bundleName也是项目的bundleName
这里的abilityName项目的bundleName+serviceAbility的Name组合而成

示例
比如我上图的示例是com.example.myapplicationcom.example.myapplication.ServiceAbility1
那可以这么来启动serviceAbility

onPageShow(){ //Page中的项目初始化(我们这里初始化就开始调用service)console.info("Index页面显示了")let promise = featureAbility.startAbility({want:{bundleName: "com.example.myapplication",abilityName: "com.example.myapplication.ServiceAbility1",},});
}//serviceAbility会先执行onStart生命周期
//service.ts(我是这样写serviceAbility的)
//export default {
//    onStart() {// hilog.info(0x0000, 'testTag', '%{public}s', 'ServiceAbility onStart');
//        console.info("serive1 start")
//	},
//  ....
//}

在这里插入图片描述

DataAbility开发指导

在这里插入图片描述
在这里插入图片描述

接口名描述
onInitialized在Ability初始化调用,通过此回调方法执行rdb等初始化操作。
update更新数据库中的数据。
query查询数据库中的数据。
delete删除一条或多条数据。
normalizeUri对uri进行规范化。一个规范化的uri可以支持跨设备使用、持久化、备份和还原等,当上下文改变时仍然可以引用到相同的数据项。
batchInsert向数据库中插入多条数据。
denormalizeUri将一个由normalizeUri生产的规范化uri转换成非规范化的uri。
insert向数据中插入一条数据。
openFile打开一个文件。
getFileTypes获取文件的MIME类型。
getType获取uri指定数据相匹配的MIME类型。
executeBatch批量操作数据库中的数据。
call自定义方法。
开发Data步骤
创建Data
  1. 需要实现Data中Insert、Query、Update、Delete接口的业务内容。保证能够满足数据库存储业务的基本需求。BatchInsert与ExecuteBatch接口已经在系统中实现遍历逻辑,依赖Insert、Query、Update、Delete接口逻辑,来实现数据的批量处理。
//data.ts(鸿蒙文档中的配置)
import hilog from '@ohos.hilog';
import featureAbility from '@ohos.ability.featureAbility';
import dataAbility from '@ohos.data.dataAbility';
import dataRdb  from '@ohos.data.rdb';const TABLE_NAME = "book";//表名
const STORE_CONFIG = {name:'book.db'}
const SQL_CREATE_TABLE = 'CREATE TABLE IF NOT EXISTS book(id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT NOT NULL, introduction TEXT NOT NULL)' //创建表
let rdbStore: dataRdb.RdbStore = undefined //数据存储仓库export default {onInitialized(abilityInfo) {//DataAbility初始化调用// hilog.info(0x0000, 'testTag', '%{public}s', 'DataAbility onInitialized');console.info("DataAbility onInitialized, abilityInfo:" + abilityInfo.bundleName)let context = featureAbility.getContext()//获取当前的对象dataRdb.getRdbStore(context, STORE_CONFIG, 1, (err, store) => {console.info('DataAbility getRdbStore callback')store.executeSql(SQL_CREATE_TABLE, [])rdbStore = store});},insert(uri, valueBucket, callback) {console.info('DataAbility insert start')rdbStore.insert(TABLE_NAME, valueBucket, callback)},batchInsert(uri, valueBuckets, callback) {console.info('DataAbility batch insert start')for (let i = 0;i < valueBuckets.length; i++) {console.info('DataAbility batch insert i=' + i)if (i < valueBuckets.length - 1) {rdbStore.insert(TABLE_NAME, valueBuckets[i], (err: any, num: number) => {console.info('DataAbility batch insert ret=' + num)})} else {rdbStore.insert(TABLE_NAME, valueBuckets[i], callback)}}},query(uri, columns, predicates, callback) {console.info('DataAbility query start')let rdbPredicates = dataAbility.createRdbPredicates(TABLE_NAME, predicates)rdbStore.query(rdbPredicates, columns, callback)},update(uri, valueBucket, predicates, callback) {console.info('DataAbilityupdate start')let rdbPredicates = dataAbility.createRdbPredicates(TABLE_NAME, predicates)rdbStore.update(valueBucket, rdbPredicates, callback)},delete(uri, predicates, callback) {console.info('DataAbilitydelete start')let rdbPredicates = dataAbility.createRdbPredicates(TABLE_NAME, predicates)rdbStore.delete(rdbPredicates, callback)}
};

当你用以下调用

//service.ts(其中一个ability)
import hilog from '@ohos.hilog';import featureAbility from '@ohos.ability.featureAbility'
import ohos_data_ability from "@ohos.data.dataAbility"
import ohos_data_rdb from '@ohos.data.rdb'var urivar = "dataability://com.example.myapplication.DataAbility1"
var DAHelper = featureAbility.acquireDataAbilityHelper(urivar
);
var valuesBucket = {"name": "chentianyu"}
var da = new ohos_data_ability.DataAbilityPredicates()
var valArray =new Array("value1");
var cars = new Array({"batchInsert1" : "value1",});export default {insertOne(){DAHelper.insert(urivar,valuesBucket,(error, data)=>{console.log("DAHelper insert result: " + data)})},onStart() {// hilog.info(0x0000, 'testTag', '%{public}s', 'ServiceAbility onStart');console.info("serive1 start")this.insertOne()},onStop() {hilog.info(0x0000, 'testTag', '%{public}s', 'ServiceAbility onStop');},onCommand(want, startId) {hilog.info(0x0000, 'testTag', '%{public}s', 'ServiceAbility onCommand');},};

启动程序后出现一下日志(Log)
在这里插入图片描述
所以我们要看DataAbility接口开发

其实是dataability:///+bundleName+Name不是dataability://+bundleName+Name,这bundleName和Name上面有讲(ets获取service的bundleName)
在这里插入图片描述
在这里插入图片描述
这样,PageAbility、ServiceAbility、DataAbility就可以联动起来了

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

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

相关文章

vs2019 - MFC对话框程序的工程名称不支持下划线命名法

文章目录 vs2019 - MFC对话框程序的工程名称不支持下划线命名法概述笔记备注END vs2019 - MFC对话框程序的工程名称不支持下划线命名法 概述 正在写账单分析程序, 用MFC 对话框. 因为比较习惯下划线命名法, 就在向导中给工程名称起了一个my_test这样的名称(下划线命名法, 小…

车载通信架构 —— 传统车内通信网络CAN(可靠性为王)

车载通信架构 —— 传统车内通信网络CAN(可靠性为王) 我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 屏蔽力是信息过载时代一个人的特殊竞争力,任何消耗你的人和事,多看一眼都是你的不对。非…

antv/g6的学习总结

新建一个简单实例 1、使用命令行在项目目录下执行以下命令 cnpm install --save antv/g6 2、创建容器 <div id"mountNode"></div> 3、在需要用的 G6 的 JS 文件中导入 import G6 from antv/g6; 4、 数据准备 引入 G6 的数据源为 JSON 格式的对象。…

mysql 计算同比、环比,查询结果拼接成列、行、

一、理论 国家统计局同比、环比计算公式 增长速度是反映经济社会某一领域发展变化情况的重要数据&#xff0c;而同比和环比是反映增长速度最基础、最核心的数据指标&#xff0c;也是国际上通用的指标。在统计中&#xff0c; 同比和环比通常是同比变化率和环比变化率的简称&…

手把手教会你--渗透实战--最开始的靶机演示--项目二:Lampiao

有什么问题&#xff0c;请尽情问博主&#xff0c;QQ群796141573 前言。。。知识1.1 开头介绍1.2 22/80端口1.3 nmap1.4 IP地址1.5 开启靶机--网络模式1.6 信息收集(1) 查看源代码(2) 查看常见漏洞(3) 随便点一点\改一改 1.7 robots.txt。。。实战1.1 确定目标(1) 查看自己的ip地…

UData+StarRocks在京东物流的实践 | 京东物流技术团队

1 背景 数据服务与数据分析场景是数据团队在数据应用上两个大的方向&#xff0c;行业内大家有可能会遇到下面的问题&#xff1a; 1.1 数据服务 烟囱式开发模式&#xff1a;每来一个需求开发一个数据服务&#xff0c;数据服务无法复用&#xff0c;难以平台化&#xff0c;技术…

1146:吃糖果(C语言)

题目描述 HOHO&#xff0c;终于从Speakless手上赢走了所有的糖果&#xff0c;是Gardon吃糖果时有个特殊的癖好&#xff0c;就是不喜欢连续两次吃一样的糖果&#xff0c;喜欢先吃一颗A种类的糖果&#xff0c;下一次换一种口味&#xff0c;吃一颗B种类的糖果&#xff0c;这样&…

【电路笔记】-快速了解电阻

快速了解电阻 文章目录 快速了解电阻1、概述2、电阻器的组成类型2.1 碳电阻器2.2 薄膜电阻器2.3 绕线电阻器 3、总结 电阻器是所有电子元件中最基本、最常用的元件&#xff0c;人们几乎认为电阻器是理所当然的&#xff0c;但它们在电路中起着至关重要的作用。 1、概述 有许多不…

pycharm安装PyQt5及其工具

PyCharm安装PyQt5及其工具&#xff08;Qt Designer、PyUIC、PyRcc&#xff09;详细教程_pycharm pyqt5-CSDN博客 上面是原文链接&#xff0c;根据原文链接&#xff0c;我重新记录一下。IDE&#xff1a;pycharm 2023.2.5 一共需要安装5个。 在PyCharm中如何完整优雅地安装配置…

开源四轴协作机械臂ultraArm激光雕刻技术案例!

注意安全事项 开始之前&#xff0c;请确保您已采取适当的安全措施&#xff0c;例如用于激光操作的防护眼镜、灭火器和通风良好的区域。 引言 随着科技的不断进步&#xff0c;激光雕刻技术已经成为当今制造行业中不可或缺的一部分。它以其高精度、高效率和广泛的材料适应性&…

医学影像PACS源码:PACS系统的基础知识(DICOM、HL7、SWF)

1、PACS PACS是Picture Archiving and Communication Systems首字母缩写&#xff0c;全称为影像储存和传输系统&#xff0c;涉及放射医学、计算机技术、通讯技术及数字图像技术等&#xff0c;是医院信息系统的重要组成部分&#xff0c;是将数字医疗设备(如X线、CT、MRI、超声、…

linux shell操作 - 05 进程 与 IO 模型

文章目录 计算机内存分配进程与子进程流IO模型非阻塞IOIO多路复用网络IO模型简单的socket并发的socket 计算机内存分配 一个32位&#xff0c;4G内存的计算机&#xff0c;内存使用分为两部分&#xff1a; 操作系统内核空间&#xff1b;应用程序的用户空间使用的操作系统不同&a…

信奥编程 1168:大整数加法

解析&#xff1a;在c中需要考虑这么几个问题&#xff0c;第一个是大数据的输入&#xff0c;第二个是大数据的存储&#xff0c;第三是大数据的计算方式&#xff0c;最后是输出。 针对上述几个问题&#xff0c;第一个问题&#xff0c;采用字符串的方式或者数组加循环的方式接收输…

抖音团购小程序怎么开通?怎么做抖音团购?

餐饮同行们已经纷纷上架了抖音团购服务&#xff0c;还没入局的商家还在等待什么呢&#xff1f;如果你还没有抓住这个流量的红利期&#xff0c;那就真的OUT了&#xff01;为了在这个竞争激烈的市场中脱颖而出&#xff0c;建议你尽快行动起来&#xff0c;打造一个属于自己的抖音团…

C#实体类与XML互转以及List和DataTable转XML的使用

引言 在C#开发中&#xff0c;数据的存储和传输是非常常见的需求。使用XML作为数据格式有很多优点&#xff0c;例如可读性强、易于解析等。而实体类、List和DataTable是表示数据模型的常用方式。本文将介绍如何在C#中实现实体类、List和DataTable与XML之间的相互转换&#xff0c…

【数据结构—单链表的实现】

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 目录 前言 1. 链表的概念及结构 2. 单链表的实现 2.1单链表头文件——功能函数的定义 2.2单链表源文件——功能函数的实现 2.3 单链表源文件——功能的测试 3.具体的理解操作…

二叉树OJ题讲解之一

今天我们一起来做一道初级的二叉树OJ题&#xff0c;都是用递归思想解答 力扣965.单值二叉树 链接https://leetcode.cn/problems/univalued-binary-tree/description/ 所谓单值二叉树就是这棵二叉树的所有节点的值是相同的&#xff0c;那我们要做这道题&#xff0c;肯定要…

适用于iOS 的顶级苹果数据恢复软件

数据丢失可能随时发生在任何人身上&#xff0c;这可能是一种令人沮丧的经历。丢失 iOS 设备上的重要数据可能会造成特别严重的损失&#xff0c;因为其中可能包括有价值的照片、联系人、消息和其他重要文件。幸运的是&#xff0c;有多种数据恢复工具可以帮助用户恢复丢失的数据。…

Python基础:推导式(Comprehensions)详解

1. 推导式概念 Python推导式&#xff08;comprehensions&#xff09;是一种简洁而强大的语法&#xff0c;用于从已存在的数据&#xff08;列表、元组、集合、字典等&#xff09;中创建新的数据结构。推导式包括&#xff1a; 列表推导式元组推导式字典推导式集合推导式 2. 列表…

Vue 实现低代码开发平台,没想到这么好用!

前言 在众多开发技术中&#xff0c;Vue 组件化开发技术以其卓越的灵活性和高效性备受瞩目。 低代码平台相信不少人知道它的存在&#xff0c;而且现在大部分公司都在开发自己的低代码平台&#xff0c;首先我们来看看低代码平台可视化界面&#xff1a; 官网&#xff1a;https:/…