×
Hello HarmonyOS!——鸿蒙应用开发从入门到精通

Hello HarmonyOS!——鸿蒙应用开发从入门到精通

1星价 ¥97.3 (7.0折)
2星价¥97.3 定价¥139.0
暂无评论
图文详情
  • ISBN:9787121428685
  • 装帧:一般轻型纸
  • 册数:暂无
  • 重量:暂无
  • 开本:16开
  • 页数:520
  • 出版时间:2022-02-01
  • 条形码:9787121428685 ; 978-7-121-42868-5

本书特色

适读人群 :本书适合移动终端应用设计、开发工程师,以及对鸿蒙应用开发感兴趣或准备从事相关行业的开发者及院校师生阅读参考。1.本书内容丰富,针对HarmonyOS 2.0,全面地介绍了鸿蒙2.0应用开发所涉及的知识点,使用概念介绍、代码编写、代码讲解的模式,将所讲的内容通过小案例用由浅入深、分步拆解的方式进行介绍,可以给你更好的学习体验。 2.作者权威,作者是华为认证的HarmonyOS系统课程开发者、华为开发者专家

内容简介

本书是系统地介绍鸿蒙应用开发知识的图书,较全面地介绍了鸿蒙应用开发所涉及的知识点,使用概念介绍、代码编写、代码讲解的模式,将所讲的内容通过小案例用由浅入深、分步拆解的方式进行介绍,希望为你带来更好的学习体验。 本书共分为9章。第1章介绍了HarmonyOS的特性、基础知识及鸿蒙应用如何在单机和多设备上运行与调试。第2章和第8章介绍了鸿蒙应用的布局与组件。第3章~第7章介绍了鸿蒙应用开发的各项知识,包括Ability、分布式通信、数据管理、公共事件和通知、服务卡片。第9章介绍了鸿蒙应用开发过程中的线程管理。

目录

第1章 HarmonyOS开篇 | 1

1.1 HarmonyOS概述 | 1

1.1.1 HarmonyOS技术特性 | 2

1.1.2 HarmonyOS架构 | 5

1.2 HarmonyOS环境搭建 | 7

1.2.1 DevEco Studio安装 | 7

1.2.2 SDK安装 | 10

1.2.3 HDC工具配置 | 17

1.2.4 账号注册与实名认证 | 21

1.3 HarmonyOS应用程序知识 | 25

1.3.1 App与HAP | 25

1.3.2 Ability概述 | 27

1.4 **个程序:Hello World! | 27

1.4.1 创建项目 | 28

1.4.2 项目目录 | 31

1.4.3 配置文件 | 34

1.4.4 模拟器运行 | 36

1.4.5 应用签名与真机运行 | 45

1.4.6 自动签名 | 56

1.4.7 应用程序的断点调试 | 58

1.4.8 HiLog日志 | 63

1.5 本章小结 | 68

第2章 HarmonyOS页面开发 | 69

2.1 组件与组件容器 | 69

2.1.1 Component | 69

2.1.2 ComponentContainer | 70

2.1.3 开发用户页面的方式 | 71

2.1.4 边距 | 72

2.2 常用布局 | 76

2.2.1 DirectionalLayout | 76

2.2.2 DependentLayout | 89

2.2.3 StackLayout | 95

2.2.4 TableLayout | 98

2.2.5 PositionLayout | 105

2.2.6 AdaptiveBoxLayout | 106

2.3 常用组件 | 109

2.3.1 Component | 109

2.3.2 Text和TextField | 112

2.3.3 Button | 118

2.3.4 RadioButton和RadioContainer | 121

2.3.5 Checkbox | 129

2.3.6 Image | 131

2.3.7 ProgressBar和RoundProgressBar | 135

2.3.8 ToastDialog | 140

2.4 常用的资源类型 | 143

2.4.1 资源目录 | 143

2.4.2 资源文件的使用 | 144

2.4.3 限定词目录 | 153

2.4.4 样式与样式选择 | 155

2.5 动画开发 | 160

2.5.1 帧动画 | 160

2.5.2 数值动画 | 163

2.5.3 属性动画 | 168

2.6 组件的事件监听 | 171

2.6.1 事件类别 | 171

2.6.2 事件监听的五种写法 | 174

2.7 本章小结 | 180

第3章 Ability开发 | 181

3.1 Ability概述 | 181

3.2 Page Ability | 182

3.2.1 Page Ability的创建 | 183

3.2.2 Page Ability的生命周期 | 188

3.2.3 Page Ability的导航 | 191

3.3 Service Ability | 203

3.3.1 Service Ability的创建 | 203

3.3.2 Service Ability的生命周期 | 206

3.4 Ability属性配置 | 215

3.4.1 Ability的配置文件 | 215

3.4.2 Ability的启动模式 | 218

3.5 Intent | 220

3.5.1 Intent对象的结构 | 220

3.5.2 Intent对象的操作 | 221

3.6 本章小结 | 222

第4章 分布式通信 | 224

4.1 远程启动FA | 224

4.1.1 获取远程设备的信息 | 225

4.1.2 启动FA | 231

4.2 应用迁移 | 236

4.2.1 IAbilityContinuation接口 | 236

4.2.2 应用迁移案例 | 239

4.2.3 IAbilityContinuation接口的其他回调方法 | 243

4.3 应用回迁 | 246

4.4 跨设备启动服务 | 248

4.5 跨设备连接服务 | 252

4.6 跨设备服务调用 | 256

4.7 本章小结 | 264

第5章 数据管理 | 265

5.1 本地数据管理 | 265

5.1.1 关系型数据库与SQLite | 265

5.1.2 关系型数据库的操作 | 268

5.1.3 对象关系映射数据库 | 282

5.1.4 Preferences | 298

5.2 分布式数据管理 | 309

5.2.1 分布式数据服务 | 309

5.2.2 分布式数据服务开发 | 311

5.3 分布式文件服务 | 325

5.3.1 分布式文件服务概述 | 325

5.3.2 分布式文件服务开发 | 326

5.4 Data Ability | 333

5.4.1 Data Ability概述 | 333

5.4.2 Data Ability的创建 | 334

5.4.3 Data Ability的文件访问 | 338

5.4.4 Data Ability的数据库访问 | 345

5.5 本章小节 | 355

第6章 公共事件和通知 | 356

6.1 公共事件 | 357

6.1.1 公共事件发布 | 357

6.1.2 事件订阅 | 364

6.1.3 公共事件退订 | 369

6.2 通知 | 370

6.3 IntentAgent | 382

6.3.1 IntentAgent概述 | 382

6.3.2 IntentAgent开发 | 383

6.4 本章小结 | 390

第7章 服务卡片与原子化服务 | 391

7.1 卡片 | 391

7.1.1 创建卡片 | 394

7.1.2 卡片的开发 | 400

7.2 原子化服务 | 417

7.2.1 原子化服务概述 | 417

7.2.2 原子化服务开发 | 418

7.3 本章小结 | 422

第8章 高级编程 | 423

8.1 ListContainer | 423

8.1.1 ListContainer的使用 | 423

8.1.2 ListContainer的事件方法 | 430

8.2 ScrollView | 432

8.2.1 ScrollView的使用 | 432

8.2.2 ScrollView的事件方法 | 436

8.3 PageSlider与PageSliderIndicator | 439

8.3.1 PageSlider的使用 | 439

8.3.2 PageSlider的方法 | 445

8.3.3 PageSliderIndicator的使用 | 448

8.3.4 PageSliderIndicator的事件方法 | 454

8.4 WebView | 456

8.4.1 WebView的使用 | 456

8.4.2 WebView的事件方法 | 458

8.5 Fraction | 471

8.5.1 Fraction概述 | 471

8.5.2 Fraction的使用 | 473

8.6 本章小结 | 482

第9章 线程管理 | 483

9.1 线程管理开发 | 483

9.1.1 线程优先级 | 484

9.1.2 TaskDispatcher开发 | 484

9.2 线程间通信 | 497

9.2.1 EventHandler运行机制 | 498

9.2.2 线程间通信相关的对象 | 499

9.2.3 线程间通信开发 | 502

9.3 本章小结 | 510


展开全部

节选

4.4 跨设备启动服务 在HarmonyOS中,所有的功能都被抽象成Ability,服务被称作Service Ability,它不包含与用户进行交互的页面。比如,音乐播放器可以在退回到桌面后,依然播放音乐,这其实就是一种没有页面的服务。依托于HarmonyOS的分布式通信能力,开发者可以完成跨设备的服务启动,以便控制其他设备上的服务。首先来看一种*简单的使用方式:跨设备启动Service Ability。 跨设备启动服务和跨设备启动应用其实非常类似,需要申请ohos.permission.DISTRIBUTED_DATASYNC权限。当然,如果你需要查询网络中的分布式设备信息,那么还需要ohos.permission.GET_DISTRIBUTED_ DEVICE_INFO权限。 接下来完成一个跨设备启动Service Ability的案例。要完成这个案例,就需要以下几个步骤。 图4-14 创建SimpleServiceAbility (1)权限配置。同4.2.2节的权限配置。 (2)通过DevEco Studio创建Service Ability,命名为SimpleServiceAbility,如图4-14所示。 (3)在ability_main.xml布局文件中新增一个按钮。 ...... (4)在MainAbilitySlice中定义它的点击事件。 Button startService = (Button)findComponentById(ResourceTable.Id_ start_service); startService.setClickedListener(new Component.ClickedListener() { @Override public void onClick(Component component) { Intent intent = new Intent(); //配置Intent参数 Operation operation = new Intent.OperationBuilder() .withDeviceId(deviceList.get(0).getDeviceId()) .withBundleName(getBundleName()) .withAbilityName(SimpleServiceAbility.class.getName()) .withFlags(Intent.FLAG_ABILITYSLICE_MULTI_DEVICE).build(); intent.setOperation(operation); intent.setParam("data","这是远程服务传来的消息!"); startAbility(intent); } }); 这里的代码其实与远程启动FA是一样的,并没有区别。在上述代码中使用了deviceList.get(0).getDeviceId()方法获取设备ID,deviceList通过以下方式来获取。 List deviceList = DeviceManager.getDeviceList (DeviceInfo.FLAG_GET_ONLINE_DEVICE); 由于Service Ability是没有页面的,为了方便看到效果,在Intent对象中传递了一个字符串。当启动远程服务后,开发者可以获取这个字符串,并给出提示,这样就能看出启动远程服务的效果。具体操作是在SimpleServicAbility的onCommand()方法中获取这个字符串,使用ToastDialog组件给出提示。 Ability为开发者提供了startAbility()方法来启动另一个Ability。由于不管是Feature Ability,还是Service Ability,都属于Ability的一种,所以也可以使用startAbility()方法来启动一个Service Ability。如果远程启动设备的Ability,那么只需要通过Operation对象的withDeviceId()方法来指定要启动的是哪一台设备上的Service Ability即可。 (5)重写SimpleServiceAbilty中的onCommand()方法。获取传递过来的字符串,并进行提示。 @Override protected void onCommand(Intent intent, boolean restart, int startId) { super.onCommand(intent, restart, startId); String sdata = intent.getStringParam("data"); new ToastDialog(ctx).setText(sdata).show(); } 到这里,所有的代码都准备完成了,接下来将程序运行到模拟器上观察效果。首先获取分布式设备的信息,然后点击“启动远程服务”按钮,可以看到右侧设备已经弹出了消息提示,说明启动远程服务成功,如图4-15所示。 (a) (b) 图4-15 启动远程服务 这个时候,将右侧设备返回到桌面(将程序切换到后台),再次点击“启动远程服务”按钮,也是可以接收到消息的,如图4-16所示。 图4-16 后台运行的服务 这就是启动远程服务的例子,接下来介绍连接服务。它可以让多个设备之间建立一条通路,通过这条通路,可以实现以低延时在不同设备间进行数据交换。

作者简介

孙洋,华为开发者专家(HDE),华为认证的HarmonyOS系统课程开发者,华为开发者学堂认证讲师,51CTO HarmonyOS技术社区MVP,CSDN博客专家,中国农业银行总行前研发工程师

预估到手价 ×

预估到手价是按参与促销活动、以最优惠的购买方案计算出的价格(不含优惠券部分),仅供参考,未必等同于实际到手价。

确定
快速
导航