harmonyos-best-practices-mcp 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (460) hide show
  1. package/README.md +121 -0
  2. package/data/docs/bpta-2in1-window-shape.md +296 -0
  3. package/data/docs/bpta-abckitts-implements-instrumentation.md +1279 -0
  4. package/data/docs/bpta-add-watermark.md +379 -0
  5. package/data/docs/bpta-ads-jump.md +67 -0
  6. package/data/docs/bpta-agent.md +472 -0
  7. package/data/docs/bpta-always-on-market-watch.md +703 -0
  8. package/data/docs/bpta-analysis-of-image-blurring.md +231 -0
  9. package/data/docs/bpta-analyze-memory-problem.md +17 -0
  10. package/data/docs/bpta-animation-frame.md +28 -0
  11. package/data/docs/bpta-antipeep-protection.md +291 -0
  12. package/data/docs/bpta-app-architecture-overview.md +25 -0
  13. package/data/docs/bpta-app-asset-protection-design.md +277 -0
  14. package/data/docs/bpta-app-code-ob.md +180 -0
  15. package/data/docs/bpta-app-concurrency-design.md +1189 -0
  16. package/data/docs/bpta-app-data-security.md +397 -0
  17. package/data/docs/bpta-app-icon-configuration.md +226 -0
  18. package/data/docs/bpta-app-privacy-protection.md +295 -0
  19. package/data/docs/bpta-application-aspect-programming-design.md +675 -0
  20. package/data/docs/bpta-application-cold-start-optimization.md +1397 -0
  21. package/data/docs/bpta-application-continue-progess.md +285 -0
  22. package/data/docs/bpta-application-gesture-share.md +468 -0
  23. package/data/docs/bpta-application-knock-file-share.md +263 -0
  24. package/data/docs/bpta-application-knock-video-share.md +552 -0
  25. package/data/docs/bpta-application-latency-optimization-cases.md +615 -0
  26. package/data/docs/bpta-application-power-analysis.md +15 -0
  27. package/data/docs/bpta-application-power-optimization.md +12 -0
  28. package/data/docs/bpta-application-power-test.md +52 -0
  29. package/data/docs/bpta-application-track-practice.md +595 -0
  30. package/data/docs/bpta-arkts-high-performance.md +464 -0
  31. package/data/docs/bpta-arkts-js-memory-analysis.md +111 -0
  32. package/data/docs/bpta-arkts-language.md +18 -0
  33. package/data/docs/bpta-arkweb-component-security.md +1134 -0
  34. package/data/docs/bpta-arkweb_rendering_framework.md +412 -0
  35. package/data/docs/bpta-aspect-implements-aop.md +505 -0
  36. package/data/docs/bpta-audio-and-video.md +30 -0
  37. package/data/docs/bpta-audio-cast.md +460 -0
  38. package/data/docs/bpta-audio-focus-management.md +862 -0
  39. package/data/docs/bpta-audio-in-ear-monitor.md +803 -0
  40. package/data/docs/bpta-audio-playback-series.md +16 -0
  41. package/data/docs/bpta-audio-record-base-on-audiocapturer.md +188 -0
  42. package/data/docs/bpta-audio-record-base-on-avrecorder-arkts.md +179 -0
  43. package/data/docs/bpta-audio-record-base-on-avrecorder.md +207 -0
  44. package/data/docs/bpta-audio-record-base-on-avscreencapture.md +165 -0
  45. package/data/docs/bpta-audio-record-base-on-ohaudio.md +162 -0
  46. package/data/docs/bpta-audio-record-overview.md +34 -0
  47. package/data/docs/bpta-audio-record.md +16 -0
  48. package/data/docs/bpta-audio-ripple-animation.md +198 -0
  49. package/data/docs/bpta-audio-video-synchronization.md +508 -0
  50. package/data/docs/bpta-audio-video.md +15 -0
  51. package/data/docs/bpta-automated-testing-frameworks.md +481 -0
  52. package/data/docs/bpta-avplayer-basic-control.md +533 -0
  53. package/data/docs/bpta-avplayer-embeded-network-video.md +486 -0
  54. package/data/docs/bpta-avplayer-embeded-short-video.md +512 -0
  55. package/data/docs/bpta-avplayer-long-video.md +907 -0
  56. package/data/docs/bpta-avplayer-short-video.md +158 -0
  57. package/data/docs/bpta-avplayer-video-practices.md +15 -0
  58. package/data/docs/bpta-avscreencapture-for-screen-recording.md +1121 -0
  59. package/data/docs/bpta-back-task-implement.md +317 -0
  60. package/data/docs/bpta-background-blur.md +316 -0
  61. package/data/docs/bpta-background-sensors-baned-analysis.md +93 -0
  62. package/data/docs/bpta-best-practices-long-list.md +891 -0
  63. package/data/docs/bpta-best-practices-overview.md +48 -0
  64. package/data/docs/bpta-bluetooth-low-energy.md +905 -0
  65. package/data/docs/bpta-buffer-mode-transcoding.md +728 -0
  66. package/data/docs/bpta-buffer-power-optimization.md +224 -0
  67. package/data/docs/bpta-camera-shot2see.md +368 -0
  68. package/data/docs/bpta-card-update-and-data-interaction.md +670 -0
  69. package/data/docs/bpta-carousel-graphic-works.md +379 -0
  70. package/data/docs/bpta-cell-phone.md +13 -0
  71. package/data/docs/bpta-click-to-click-response-optimization.md +264 -0
  72. package/data/docs/bpta-click-to-complete-delay-analysis.md +637 -0
  73. package/data/docs/bpta-collaboration-office.md +1178 -0
  74. package/data/docs/bpta-comment-reply-pop-up-window.md +523 -0
  75. package/data/docs/bpta-common-list-flows.md +688 -0
  76. package/data/docs/bpta-common-list-operations.md +828 -0
  77. package/data/docs/bpta-common-network-query.md +784 -0
  78. package/data/docs/bpta-comparative_practice_of_taskpool_and_worker.md +381 -0
  79. package/data/docs/bpta-compatible-scheme.md +11 -0
  80. package/data/docs/bpta-complex-type-pass.md +868 -0
  81. package/data/docs/bpta-component-nesting-optimization.md +421 -0
  82. package/data/docs/bpta-component-reuse-issue-diagnosis-and-analysis.md +637 -0
  83. package/data/docs/bpta-component-reuse.md +1258 -0
  84. package/data/docs/bpta-concurrency-capability.md +23 -0
  85. package/data/docs/bpta-concurrent-optimization.md +369 -0
  86. package/data/docs/bpta-content-creation.md +646 -0
  87. package/data/docs/bpta-continue-cast.md +702 -0
  88. package/data/docs/bpta-continue-data.md +335 -0
  89. package/data/docs/bpta-continue.md +1323 -0
  90. package/data/docs/bpta-control-rendering-range.md +29 -0
  91. package/data/docs/bpta-controlling-background-process-cpu.md +31 -0
  92. package/data/docs/bpta-crash-monitor-practice.md +116 -0
  93. package/data/docs/bpta-cross-domain-solutions-for-web-pages.md +308 -0
  94. package/data/docs/bpta-cross-end-migration.md +13 -0
  95. package/data/docs/bpta-cross-module-reference.md +406 -0
  96. package/data/docs/bpta-cross-platform-compatibility.md +321 -0
  97. package/data/docs/bpta-custom-camera-photo.md +454 -0
  98. package/data/docs/bpta-custom-camera-preview.md +1170 -0
  99. package/data/docs/bpta-custom-camera-video.md +322 -0
  100. package/data/docs/bpta-custom-font-settings.md +354 -0
  101. package/data/docs/bpta-custom-hvigor-plugin.md +159 -0
  102. package/data/docs/bpta-custom-keyboard.md +519 -0
  103. package/data/docs/bpta-customdialog-selection-and-development.md +406 -0
  104. package/data/docs/bpta-dark-mode-adaptation.md +321 -0
  105. package/data/docs/bpta-deal-stride-solution.md +261 -0
  106. package/data/docs/bpta-decrease_pakage_size.md +126 -0
  107. package/data/docs/bpta-delayed-trigger-operation.md +215 -0
  108. package/data/docs/bpta-desktop-shortcuts.md +180 -0
  109. package/data/docs/bpta-detection.md +12 -0
  110. package/data/docs/bpta-developing-high-performance-ui.md +19 -0
  111. package/data/docs/bpta-development-scenarios-for-tabs.md +934 -0
  112. package/data/docs/bpta-dialog-encapsulation.md +201 -0
  113. package/data/docs/bpta-dispose-highly-loaded-component-render.md +352 -0
  114. package/data/docs/bpta-distribute-drag-cast.md +60 -0
  115. package/data/docs/bpta-distributed-pasteboard-cast.md +88 -0
  116. package/data/docs/bpta-distributed-pasteboard.md +314 -0
  117. package/data/docs/bpta-drawing-capability-improve-performance.md +436 -0
  118. package/data/docs/bpta-dynamic-link-library.md +272 -0
  119. package/data/docs/bpta-easygo-parallel.md +402 -0
  120. package/data/docs/bpta-fair-use-animation.md +1693 -0
  121. package/data/docs/bpta-file-transmission-based-on-sfft.md +265 -0
  122. package/data/docs/bpta-file-upload-and-download-performance.md +484 -0
  123. package/data/docs/bpta-foldable-guide.md +205 -0
  124. package/data/docs/bpta-folded-hover.md +202 -0
  125. package/data/docs/bpta-form-kit.md +12 -0
  126. package/data/docs/bpta-frontend-invisible-animation-analysis.md +187 -0
  127. package/data/docs/bpta-full-scenario-collaborative-development.md +13 -0
  128. package/data/docs/bpta-fuzzy-scene-performance-optimization.md +256 -0
  129. package/data/docs/bpta-game-prelaunch-practice.md +175 -0
  130. package/data/docs/bpta-general-comments.md +17 -0
  131. package/data/docs/bpta-gestures-practice.md +619 -0
  132. package/data/docs/bpta-global-state-management-state-store.md +472 -0
  133. package/data/docs/bpta-gpu-acceleration-practices.md +11 -0
  134. package/data/docs/bpta-graphic-drawing-practices.md +13 -0
  135. package/data/docs/bpta-grid-based-on-scrollcomponents.md +1112 -0
  136. package/data/docs/bpta-grid-drag-swap.md +725 -0
  137. package/data/docs/bpta-hadss_dialoghub.md +786 -0
  138. package/data/docs/bpta-harmony-application-security.md +1253 -0
  139. package/data/docs/bpta-hdrtosdr.md +439 -0
  140. package/data/docs/bpta-hdrvivid.md +700 -0
  141. package/data/docs/bpta-high-cpu-load-analysis.md +113 -0
  142. package/data/docs/bpta-high-performance-json-parsing.md +263 -0
  143. package/data/docs/bpta-high-performance-protobuf-parsing.md +259 -0
  144. package/data/docs/bpta-hmos-live-stream-audio-call.md +140 -0
  145. package/data/docs/bpta-hmos-live-stream-solution.md +495 -0
  146. package/data/docs/bpta-hmrouter.md +659 -0
  147. package/data/docs/bpta-hopping.md +60 -0
  148. package/data/docs/bpta-hwc-self-rendering-layer-analysis.md +77 -0
  149. package/data/docs/bpta-image-processing-practices.md +13 -0
  150. package/data/docs/bpta-image-to-video-synthesis.md +459 -0
  151. package/data/docs/bpta-image-white-lump-solution.md +282 -0
  152. package/data/docs/bpta-image_get_and_save.md +120 -0
  153. package/data/docs/bpta-implement-timeline-based-on-canvas.md +493 -0
  154. package/data/docs/bpta-implementing-image-filters.md +406 -0
  155. package/data/docs/bpta-implementing-image-resizable.md +270 -0
  156. package/data/docs/bpta-improve-layout-performance.md +547 -0
  157. package/data/docs/bpta-improve-running-efficiency.md +187 -0
  158. package/data/docs/bpta-improve_grid_performance.md +268 -0
  159. package/data/docs/bpta-input-method-framework.md +12 -0
  160. package/data/docs/bpta-intent-recommend-practice.md +313 -0
  161. package/data/docs/bpta-js-leak-watcher.md +153 -0
  162. package/data/docs/bpta-kernel-memory-analysis.md +38 -0
  163. package/data/docs/bpta-keyboard-layout-adapt.md +725 -0
  164. package/data/docs/bpta-landscape-and-portrait-development.md +947 -0
  165. package/data/docs/bpta-layered-architecture-design.md +82 -0
  166. package/data/docs/bpta-lazyforeach-optimization.md +217 -0
  167. package/data/docs/bpta-link-between-apps-overview.md +99 -0
  168. package/data/docs/bpta-list-based-on-scrollcomponents.md +1643 -0
  169. package/data/docs/bpta-lite-wearable-guide.md +1899 -0
  170. package/data/docs/bpta-live-form-development-practice.md +544 -0
  171. package/data/docs/bpta-live-streaming-optimization.md +397 -0
  172. package/data/docs/bpta-local-file-and-data-multithreaded-io.md +367 -0
  173. package/data/docs/bpta-local-file.md +11 -0
  174. package/data/docs/bpta-lock-screen-immersive-live-window.md +473 -0
  175. package/data/docs/bpta-long-snapshot-practice.md +1046 -0
  176. package/data/docs/bpta-low-power-consumption-of-background-tasks.md +14 -0
  177. package/data/docs/bpta-low-power-consumption-of-foreground-tasks.md +14 -0
  178. package/data/docs/bpta-low-power-design-in-dark-mode.md +418 -0
  179. package/data/docs/bpta-ltpo-description.md +323 -0
  180. package/data/docs/bpta-maleoon-gpu-best-practices.md +1297 -0
  181. package/data/docs/bpta-malloc-dispatch-table.md +144 -0
  182. package/data/docs/bpta-managing-audio-input-devices.md +350 -0
  183. package/data/docs/bpta-managing-audio-output-devices.md +399 -0
  184. package/data/docs/bpta-mate-book-fold.md +229 -0
  185. package/data/docs/bpta-matetv-guide.md +223 -0
  186. package/data/docs/bpta-matext-guide.md +269 -0
  187. package/data/docs/bpta-memory-basic-knowledge.md +71 -0
  188. package/data/docs/bpta-memory-optimization.md +545 -0
  189. package/data/docs/bpta-modular-design.md +282 -0
  190. package/data/docs/bpta-multi-device-adaptive-layout.md +775 -0
  191. package/data/docs/bpta-multi-device-adaptive.md +11 -0
  192. package/data/docs/bpta-multi-device-camera.md +584 -0
  193. package/data/docs/bpta-multi-device-collaboration.md +19 -0
  194. package/data/docs/bpta-multi-device-component-layout.md +190 -0
  195. package/data/docs/bpta-multi-device-design-principles.md +26 -0
  196. package/data/docs/bpta-multi-device-function.md +99 -0
  197. package/data/docs/bpta-multi-device-hardware.md +12 -0
  198. package/data/docs/bpta-multi-device-ide.md +124 -0
  199. package/data/docs/bpta-multi-device-interaction.md +11 -0
  200. package/data/docs/bpta-multi-device-layout-overview.md +47 -0
  201. package/data/docs/bpta-multi-device-overview.md +340 -0
  202. package/data/docs/bpta-multi-device-page-layout.md +699 -0
  203. package/data/docs/bpta-multi-device-page.md +19 -0
  204. package/data/docs/bpta-multi-device-resource.md +122 -0
  205. package/data/docs/bpta-multi-device-responsive-layout.md +1274 -0
  206. package/data/docs/bpta-multi-device-responsive.md +14 -0
  207. package/data/docs/bpta-multi-device-screen-diff.md +197 -0
  208. package/data/docs/bpta-multi-device-screen-layout.md +834 -0
  209. package/data/docs/bpta-multi-device-start.md +376 -0
  210. package/data/docs/bpta-multi-device-ui-development.md +27 -0
  211. package/data/docs/bpta-multi-device-window-direction.md +1322 -0
  212. package/data/docs/bpta-multi-device-window-immersive.md +364 -0
  213. package/data/docs/bpta-multi-device-window-mode.md +1293 -0
  214. package/data/docs/bpta-multi-device-window.md +13 -0
  215. package/data/docs/bpta-multi-device.md +13 -0
  216. package/data/docs/bpta-multi-interaction.md +368 -0
  217. package/data/docs/bpta-multi-mobile-payment.md +282 -0
  218. package/data/docs/bpta-multi-music-app-overview.md +365 -0
  219. package/data/docs/bpta-multi-settings-application-page.md +163 -0
  220. package/data/docs/bpta-multi-tab-practice.md +750 -0
  221. package/data/docs/bpta-multi-target.md +490 -0
  222. package/data/docs/bpta-multi-window-practice.md +795 -0
  223. package/data/docs/bpta-multi_game.md +472 -0
  224. package/data/docs/bpta-music-card.md +1916 -0
  225. package/data/docs/bpta-music-playback-scenarios.md +120 -0
  226. package/data/docs/bpta-native-memory-analysis.md +101 -0
  227. package/data/docs/bpta-native-sub-main-comm.md +323 -0
  228. package/data/docs/bpta-navigation-scenarios.md +69 -0
  229. package/data/docs/bpta-network-ca-security.md +241 -0
  230. package/data/docs/bpta-network-reconnection.md +327 -0
  231. package/data/docs/bpta-network-resources.md +24 -0
  232. package/data/docs/bpta-news-reading.md +12 -0
  233. package/data/docs/bpta-news_homepage.md +449 -0
  234. package/data/docs/bpta-object-serialization-performance.md +12 -0
  235. package/data/docs/bpta-one-shot-to-the-end.md +932 -0
  236. package/data/docs/bpta-online-video-playback-lags-practice.md +298 -0
  237. package/data/docs/bpta-optimization-overview.md +227 -0
  238. package/data/docs/bpta-optimization-tool-practice.md +20 -0
  239. package/data/docs/bpta-package-structure.md +13 -0
  240. package/data/docs/bpta-pad-guide.md +268 -0
  241. package/data/docs/bpta-page-brightness-settings.md +256 -0
  242. package/data/docs/bpta-page-transition.md +583 -0
  243. package/data/docs/bpta-pc-guide.md +438 -0
  244. package/data/docs/bpta-pc.md +12 -0
  245. package/data/docs/bpta-perceived-smoothness.md +49 -0
  246. package/data/docs/bpta-performance-detection.md +160 -0
  247. package/data/docs/bpta-performance-guide-reading.md +50 -0
  248. package/data/docs/bpta-performance-mainthread-consumption-detection.md +11 -0
  249. package/data/docs/bpta-performance-optimization.md +23 -0
  250. package/data/docs/bpta-performance-runtime-detection.md +13 -0
  251. package/data/docs/bpta-performance-sliding-frame-drop-detection.md +19 -0
  252. package/data/docs/bpta-performance-startup-time-detection.md +13 -0
  253. package/data/docs/bpta-permission-application.md +318 -0
  254. package/data/docs/bpta-permission-timeout-analysis.md +51 -0
  255. package/data/docs/bpta-photo.md +15 -0
  256. package/data/docs/bpta-picture-preview.md +464 -0
  257. package/data/docs/bpta-picture.md +12 -0
  258. package/data/docs/bpta-playing-formatted-audio-based-avplayer-arkts.md +481 -0
  259. package/data/docs/bpta-playing-formatted-audio-based-avplayer-cpp.md +593 -0
  260. package/data/docs/bpta-playing-pcm-audio-based-audiorenderer.md +959 -0
  261. package/data/docs/bpta-playing-pcm-audio-based-ohaudio.md +599 -0
  262. package/data/docs/bpta-playing-short-audio-based-soundpool.md +182 -0
  263. package/data/docs/bpta-positioning.md +364 -0
  264. package/data/docs/bpta-power-basic-quality-test.md +35 -0
  265. package/data/docs/bpta-power-consumption-analysis.md +12 -0
  266. package/data/docs/bpta-power-consumption-develop-analysis.md +12 -0
  267. package/data/docs/bpta-power-consumption-experience.md +119 -0
  268. package/data/docs/bpta-power-consumption-runtime-analysis.md +15 -0
  269. package/data/docs/bpta-power_overview.md +26 -0
  270. package/data/docs/bpta-pptimized-component-drawing.md +27 -0
  271. package/data/docs/bpta-pre-connect.md +133 -0
  272. package/data/docs/bpta-preloading-resources.md +21 -0
  273. package/data/docs/bpta-program-framework.md +15 -0
  274. package/data/docs/bpta-properly-use-foreground-resources.md +22 -0
  275. package/data/docs/bpta-purax-guide.md +215 -0
  276. package/data/docs/bpta-quality-overview.md +79 -0
  277. package/data/docs/bpta-reader-page-flip.md +890 -0
  278. package/data/docs/bpta-reasonable-audio-playback-use.md +42 -0
  279. package/data/docs/bpta-reasonable-audio-use.md +163 -0
  280. package/data/docs/bpta-reasonable-bluetooth-use.md +52 -0
  281. package/data/docs/bpta-reasonable-gps-use.md +59 -0
  282. package/data/docs/bpta-reasonable-network-use.md +105 -0
  283. package/data/docs/bpta-reasonable-position-navigation-use.md +47 -0
  284. package/data/docs/bpta-reasonable-request-use.md +77 -0
  285. package/data/docs/bpta-reasonable-sensor-use.md +53 -0
  286. package/data/docs/bpta-reasonable-system-use.md +67 -0
  287. package/data/docs/bpta-recommended-use-of-device-id.md +79 -0
  288. package/data/docs/bpta-reduce-layout-nodes.md +30 -0
  289. package/data/docs/bpta-reduce-time-consuming.md +36 -0
  290. package/data/docs/bpta-redundancy-refresh-guide.md +409 -0
  291. package/data/docs/bpta-render-web-using-same-layer-render.md +601 -0
  292. package/data/docs/bpta-resource-and-storage-optimization.md +14 -0
  293. package/data/docs/bpta-retrieve-process-memory-info.md +49 -0
  294. package/data/docs/bpta-rich-text-display.md +475 -0
  295. package/data/docs/bpta-rich-text-editor.md +426 -0
  296. package/data/docs/bpta-risk-control-engine.md +146 -0
  297. package/data/docs/bpta-scenario-performance-optimization.md +17 -0
  298. package/data/docs/bpta-scenario-power-optimization.md +12 -0
  299. package/data/docs/bpta-scenario-stability-address-sanitizer.md +210 -0
  300. package/data/docs/bpta-scenario-stability-app-freeze.md +615 -0
  301. package/data/docs/bpta-scenario-stability-cppcrash.md +516 -0
  302. package/data/docs/bpta-scenario-stability-exception-exit.md +12 -0
  303. package/data/docs/bpta-scenario-stability-jscrash.md +922 -0
  304. package/data/docs/bpta-scenario-stability-leak.md +276 -0
  305. package/data/docs/bpta-scenario-stability.md +14 -0
  306. package/data/docs/bpta-screen-flicker-solution.md +480 -0
  307. package/data/docs/bpta-shared-bicycle.md +509 -0
  308. package/data/docs/bpta-short-video-base-adaptivevideo.md +403 -0
  309. package/data/docs/bpta-smart-reach.md +306 -0
  310. package/data/docs/bpta-smartwatch.md +755 -0
  311. package/data/docs/bpta-smartwatchnavigation.md +384 -0
  312. package/data/docs/bpta-smooth-application-design.md +225 -0
  313. package/data/docs/bpta-smooth-switching.md +294 -0
  314. package/data/docs/bpta-social-communications.md +11 -0
  315. package/data/docs/bpta-social-share.md +637 -0
  316. package/data/docs/bpta-solutions-to-special-issues.md +12 -0
  317. package/data/docs/bpta-sound-quality-switching.md +422 -0
  318. package/data/docs/bpta-spatiality-immersive.md +531 -0
  319. package/data/docs/bpta-special-text-recognition.md +137 -0
  320. package/data/docs/bpta-stability-address-illegal-way.md +190 -0
  321. package/data/docs/bpta-stability-address-sanitizer-catagory.md +212 -0
  322. package/data/docs/bpta-stability-address-sanitizer-faq.md +32 -0
  323. package/data/docs/bpta-stability-address-sanitizer-opt.md +170 -0
  324. package/data/docs/bpta-stability-address-sanitizer-overview.md +23 -0
  325. package/data/docs/bpta-stability-address-sanitizer-principle.md +179 -0
  326. package/data/docs/bpta-stability-analysis.md +17 -0
  327. package/data/docs/bpta-stability-app-analyzer.md +11 -0
  328. package/data/docs/bpta-stability-app-crash-cpp-way.md +200 -0
  329. package/data/docs/bpta-stability-app-crash-js-way.md +148 -0
  330. package/data/docs/bpta-stability-app-crash.md +13 -0
  331. package/data/docs/bpta-stability-app-freeze-ark-runtime.md +339 -0
  332. package/data/docs/bpta-stability-app-freeze-opt.md +80 -0
  333. package/data/docs/bpta-stability-app-freeze-way.md +410 -0
  334. package/data/docs/bpta-stability-app-freeze.md +12 -0
  335. package/data/docs/bpta-stability-app-killed-way.md +49 -0
  336. package/data/docs/bpta-stability-ark-detection.md +12 -0
  337. package/data/docs/bpta-stability-ark-exception-detection.md +38 -0
  338. package/data/docs/bpta-stability-ark-runtime-detection.md +134 -0
  339. package/data/docs/bpta-stability-asan-detection.md +450 -0
  340. package/data/docs/bpta-stability-coding-standard-api.md +2054 -0
  341. package/data/docs/bpta-stability-coding-standard-cpp.md +91 -0
  342. package/data/docs/bpta-stability-coding-standard-libuv.md +772 -0
  343. package/data/docs/bpta-stability-coding-standard-ndk-arkts.md +189 -0
  344. package/data/docs/bpta-stability-coding-standard-node.md +478 -0
  345. package/data/docs/bpta-stability-coding-standard.md +16 -0
  346. package/data/docs/bpta-stability-cpp-crash-opt.md +346 -0
  347. package/data/docs/bpta-stability-detection.md +14 -0
  348. package/data/docs/bpta-stability-deveco-testing.md +73 -0
  349. package/data/docs/bpta-stability-develop-detection.md +17 -0
  350. package/data/docs/bpta-stability-exception-exit-opt.md +12 -0
  351. package/data/docs/bpta-stability-fault-log.md +14 -0
  352. package/data/docs/bpta-stability-fault-type.md +31 -0
  353. package/data/docs/bpta-stability-file-handle-detection.md +96 -0
  354. package/data/docs/bpta-stability-gwpasan-detection.md +588 -0
  355. package/data/docs/bpta-stability-hwasan-detection.md +360 -0
  356. package/data/docs/bpta-stability-ide-static-detection.md +343 -0
  357. package/data/docs/bpta-stability-js-crash-opt.md +21 -0
  358. package/data/docs/bpta-stability-js-memleak-detection.md +214 -0
  359. package/data/docs/bpta-stability-leak-detection.md +15 -0
  360. package/data/docs/bpta-stability-leak-opt.md +251 -0
  361. package/data/docs/bpta-stability-leak-way.md +459 -0
  362. package/data/docs/bpta-stability-log-specs.md +31 -0
  363. package/data/docs/bpta-stability-log-standard-hilog.md +191 -0
  364. package/data/docs/bpta-stability-log-standard.md +11 -0
  365. package/data/docs/bpta-stability-memleak-detection-overview.md +109 -0
  366. package/data/docs/bpta-stability-native-memleak-detection.md +204 -0
  367. package/data/docs/bpta-stability-operate-apm.md +113 -0
  368. package/data/docs/bpta-stability-operate-app-event.md +320 -0
  369. package/data/docs/bpta-stability-operate-event.md +11 -0
  370. package/data/docs/bpta-stability-operate.md +15 -0
  371. package/data/docs/bpta-stability-opt.md +18 -0
  372. package/data/docs/bpta-stability-overview.md +17 -0
  373. package/data/docs/bpta-stability-ram-detection.md +17 -0
  374. package/data/docs/bpta-stability-runtime-address-sanitizer-detection.md +21 -0
  375. package/data/docs/bpta-stability-runtime-appkilled-detection.md +44 -0
  376. package/data/docs/bpta-stability-runtime-crash-detection.md +14 -0
  377. package/data/docs/bpta-stability-runtime-detection.md +14 -0
  378. package/data/docs/bpta-stability-runtime-exception-exit-detection.md +12 -0
  379. package/data/docs/bpta-stability-runtime-freeze-detection.md +21 -0
  380. package/data/docs/bpta-stability-runtime-leak-detection.md +31 -0
  381. package/data/docs/bpta-stability-testing.md +11 -0
  382. package/data/docs/bpta-stability-thread-detection.md +11 -0
  383. package/data/docs/bpta-stability-thread-leak-detection.md +35 -0
  384. package/data/docs/bpta-stability-tsan-detection.md +477 -0
  385. package/data/docs/bpta-stability-ubsan-detection.md +350 -0
  386. package/data/docs/bpta-startup-response-optimization.md +12 -0
  387. package/data/docs/bpta-state-refresh.md +48 -0
  388. package/data/docs/bpta-static-scenarios.md +63 -0
  389. package/data/docs/bpta-status-management.md +872 -0
  390. package/data/docs/bpta-surface-encoder.md +427 -0
  391. package/data/docs/bpta-swiper_high_performance_development_guide.md +357 -0
  392. package/data/docs/bpta-tablet-pc.md +11 -0
  393. package/data/docs/bpta-taskpool_usage_specifications_and_faqs.md +625 -0
  394. package/data/docs/bpta-text-expand-collapse.md +274 -0
  395. package/data/docs/bpta-texture-compression-improve-performance.md +336 -0
  396. package/data/docs/bpta-thread-priority-setting.md +233 -0
  397. package/data/docs/bpta-threads-serialization-timeout-analysis.md +169 -0
  398. package/data/docs/bpta-time-optimization-of-the-main-thread.md +1239 -0
  399. package/data/docs/bpta-travel-navigation.md +11 -0
  400. package/data/docs/bpta-tv.md +11 -0
  401. package/data/docs/bpta-ui-component-encapsulation.md +585 -0
  402. package/data/docs/bpta-ui-component-performance-optimization.md +597 -0
  403. package/data/docs/bpta-ui-dynamic-operations.md +618 -0
  404. package/data/docs/bpta-ui-skip-analysis.md +191 -0
  405. package/data/docs/bpta-unified-drag-and-drop.md +1189 -0
  406. package/data/docs/bpta-use-of-background-hardware-resources.md +16 -0
  407. package/data/docs/bpta-use-of-background-software-resources.md +14 -0
  408. package/data/docs/bpta-use-of-background-tasks.md +23 -0
  409. package/data/docs/bpta-utilize-hwc-efficiently.md +461 -0
  410. package/data/docs/bpta-vdeocast.md +558 -0
  411. package/data/docs/bpta-video-adaptation-based-web.md +462 -0
  412. package/data/docs/bpta-video-barrage.md +68 -0
  413. package/data/docs/bpta-video-codec.md +42 -0
  414. package/data/docs/bpta-video-component-long-video.md +659 -0
  415. package/data/docs/bpta-video-component-short-video.md +337 -0
  416. package/data/docs/bpta-video-layer.md +32 -0
  417. package/data/docs/bpta-video-practices.md +12 -0
  418. package/data/docs/bpta-video-render.md +1225 -0
  419. package/data/docs/bpta-video-rom.md +37 -0
  420. package/data/docs/bpta-video-thumbnail.md +179 -0
  421. package/data/docs/bpta-video-wifi.md +40 -0
  422. package/data/docs/bpta-vsync-power-optimization.md +116 -0
  423. package/data/docs/bpta-waterflow-based-on-scrollcomponents.md +989 -0
  424. package/data/docs/bpta-waterflow-operations.md +991 -0
  425. package/data/docs/bpta-waterflow-performance-optimization.md +191 -0
  426. package/data/docs/bpta-wavewheel-for-image-editor.md +421 -0
  427. package/data/docs/bpta-wear.md +12 -0
  428. package/data/docs/bpta-web-adaptation.md +451 -0
  429. package/data/docs/bpta-web-app-jump-and-pull-up.md +310 -0
  430. package/data/docs/bpta-web-click-response-delay-analysis.md +164 -0
  431. package/data/docs/bpta-web-completion-delay-analysis.md +209 -0
  432. package/data/docs/bpta-web-develop-optimization.md +2596 -0
  433. package/data/docs/bpta-web-development.md +15 -0
  434. package/data/docs/bpta-web-frame-rate-performance-analysis.md +252 -0
  435. package/data/docs/bpta-web-interceptor.md +724 -0
  436. package/data/docs/bpta-web-performance-optimization.md +11 -0
  437. package/data/docs/bpta-window-and-screen-management.md +12 -0
  438. package/data/docs/bpta-zhenlv.md +559 -0
  439. package/data/docs/changelog.md +1410 -0
  440. package/data/docs/low-power-consumption-suggestions.md +246 -0
  441. package/data/docs/multi-business-office.md +275 -0
  442. package/data/docs/multi-communication-app.md +240 -0
  443. package/data/docs/multi-community-app.md +257 -0
  444. package/data/docs/multi-convenient-life.md +501 -0
  445. package/data/docs/multi-financial-app.md +288 -0
  446. package/data/docs/multi-news-read.md +286 -0
  447. package/data/docs/multi-picture-app.md +219 -0
  448. package/data/docs/multi-shopping-price-comparison.md +254 -0
  449. package/data/docs/multi-short-video-app.md +315 -0
  450. package/data/docs/multi-ticket-class.md +458 -0
  451. package/data/docs/multi-travel-accommodation.md +361 -0
  452. package/data/docs/multi-travel-navigation.md +449 -0
  453. package/data/docs/multi-video-app.md +492 -0
  454. package/data/index.md +2886 -0
  455. package/dist/data.js +180 -0
  456. package/dist/index.js +203 -0
  457. package/dist/search.js +102 -0
  458. package/package.json +57 -0
  459. package/scripts/trim-code-extra.mjs +78 -0
  460. package/scripts/trim-code.mjs +106 -0
@@ -0,0 +1,384 @@
1
+ # 智能穿戴导航协同
2
+
3
+ > 来源: https://developer.huawei.com/consumer/cn/doc/best-practices/bpta-smartwatchnavigation
4
+ > 文档标识(fileName): bpta-smartwatchnavigation
5
+ > 目录(catalogName): best-practices
6
+ > 语言: cn
7
+ > 更新时间: 2026-06-23 03:38:34
8
+ > 导航地址: /hmos/hmos-dp1
9
+
10
+ ---
11
+ #### 概述
12
+
13
+ 本文以智能手表的协同导航功能为典型案例,系统阐述了手机与智能穿戴设备通过通信协作实现地图导航的技术方案,主要包含了智能穿戴设备协同导航的体验设计、方案设计、界面开发及功能开发。
14
+
15
+ - [体验设计](#section1736651042110):从设计与交互层面,展示智能穿戴设备协同导航的体验设计要点。
16
+ - [方案设计](#section8229111792118):从交互流程层面,展示智能穿戴设备协同导航应用整体的实现方案。
17
+ - [界面开发](#section15111857670):从手机与智能穿戴设备双端,展示手机与智能穿戴设备协同导航中的界面开发要点。
18
+ - [功能开发](#section88311141387):展示智能穿戴设备协同导航应用中的核心功能开发的原理与开发步骤。
19
+
20
+ #### 体验设计
21
+
22
+ 本章节从[UX设计](#section10370135220120)和[UI交互](#section1914862101311)两个维度,详细阐述智能穿戴设备协同导航的体验设计方案。
23
+
24
+ ## UX设计
25
+
26
+ 在智能穿戴设备协同导航实践中,涉及手机与智能穿戴设备的互联通信,双方协同完成导航功能,因此UX设计需要同时考虑手机端与智能穿戴设备端。手机端UX设计以地图展示页为核心,智能穿戴设备端UX设计以地图展示页、导航页为核心,具体设计如下表所示。
27
+
28
+ **表1** 智能穿戴设备协同导航手机与智能穿戴设备侧UX设计
29
+
30
+ | 手机侧页面 | 效果图(手机) | 效果图(智能穿戴设备) |
31
+ | --- | --- | --- |
32
+ | 首页(地图展示页) | | |
33
+ | 导航页 | 不涉及 | |
34
+
35
+ ## UI交互
36
+
37
+ 智能穿戴设备协同导航的UI交互设计主要包含以下关键特性:
38
+
39
+ 1. 导航提醒:手表通过振动反馈提示用户。
40
+ 2. 双端同步:目的地选择在手机与手表端实时同步。
41
+ 3. 常亮显示:导航过程中保持手表屏幕常亮,导航结束后关闭常亮。
42
+ 4. 交互控制:支持通过旋转表冠缩放地图视图。
43
+
44
+ #### 方案设计
45
+
46
+ 本章节将系统阐述智能穿戴设备协同导航的交互逻辑,完整呈现手机与智能穿戴设备协同的实现方案。
47
+
48
+ ## 实现方案
49
+
50
+ ![](https://contentcenter-vali-drcn.dbankcdn.cn/pvt_2/DeveloperAlliance_scene_100_1/e0/v3/ks3KCz3fT2O_1BY4X15Sbg/zh-cn_image_0000002353086117.jpg?HW-CC-KV=V1&HW-CC-Date=20260623T075621Z&HW-CC-Expire=86400&HW-CC-Sign=3BA5341ED09B1ACC9DEF01B01B28CD77FE75C80ECB0A89F7C3A3D379B3F796D6 "点击放大")
51
+
52
+ #### 界面开发
53
+
54
+ 本章节将详细阐述协同导航场景下手机端与智能穿戴设备端的核心界面开发规范,重点解析双端界面开发的关键技术要点。
55
+
56
+ ## 手机端界面开发核心要点
57
+
58
+ 手机端界面开发规范要点:
59
+
60
+ 1. 沉浸式地图展示:全屏适配,优化视觉呈现。
61
+ 2. 交互设计:采用半模态转场实现操作按钮唤起。
62
+
63
+ ![](https://contentcenter-vali-drcn.dbankcdn.cn/pvt_2/DeveloperAlliance_scene_100_1/1f/v3/btKQhSFZQd2glhPoeVmxXA/note_3.0-zh-cn.png?HW-CC-KV=V1&HW-CC-Date=20260623T075621Z&HW-CC-Expire=86400&HW-CC-Sign=36BEF7791DF1CD46D03FD2291D0E1B0DE59CB3DB1B819BE75E7DA15F3D0F3E93)
64
+
65
+ 沉浸式地图展示,开发者可参考[窗口沉浸式](https://developer.huawei.com/consumer/cn/doc/best-practices/bpta-multi-device-window-immersive)。
66
+
67
+ 操作按钮的拉起,开发者可以参考[半模态转场](https://developer.huawei.com/consumer/cn/doc/harmonyos-references/ts-universal-attributes-sheet-transition)。
68
+
69
+ ## 智能穿戴设备端界面开发核心要点
70
+
71
+ 由于智能穿戴设备屏幕尺寸有限且采用圆形表盘设计,界面开发需特别注意:
72
+
73
+ 1. 内容适配:确保显示内容完整居中,避免挤压或截断。
74
+ 2. 布局优化:针对圆形屏幕特性进行UX适配。
75
+
76
+ ![](https://contentcenter-vali-drcn.dbankcdn.cn/pvt_2/DeveloperAlliance_scene_100_1/16/v3/B0llhNYQSLG-rm5zMyXqQw/note_3.0-zh-cn.png?HW-CC-KV=V1&HW-CC-Date=20260623T075621Z&HW-CC-Expire=86400&HW-CC-Sign=ED9513374899A505D058A92D39500AC492A7C983CF43190020A7FA6864323881)
77
+
78
+ 智能穿戴设备界面开发具体可参考[智能穿戴应用开发](https://developer.huawei.com/consumer/cn/doc/best-practices/bpta-smartwatch)。
79
+
80
+ #### 功能开发
81
+
82
+ 本章节将详细解析智能穿戴设备协同导航的核心功能开发,重点阐述[地图操作](#section1084068101014)、[互联通信](#section5132818141013)、[消息通知](#section113733017108)和[振感提示](#section15991113613101)四大核心功能的实现方案,为开发者提供明确的技术指导。
83
+
84
+ ## 地图操作
85
+
86
+ 地图操作主要涉及地图展示以及地图绘制两个功能,地图展示能力开发者可以参考[显示地图](https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/map-presenting)。
87
+
88
+ 智能穿戴设备协同导航的地图绘制功能通过[MapComponentController](https://developer.huawei.com/consumer/cn/doc/harmonyos-references/map-map-mapcomponentcontroller)实现,具体包含以下核心操作:
89
+
90
+ **地图点击(目的地标记):**
91
+
92
+ **图1** 地图点击操作时序图
93
+ ![](https://contentcenter-vali-drcn.dbankcdn.cn/pvt_2/DeveloperAlliance_scene_100_1/ba/v3/Bqp6Pi6VRrOp_WqK0gs7sQ/zh-cn_image_0000002318967344.jpg?HW-CC-KV=V1&HW-CC-Date=20260623T075621Z&HW-CC-Expire=86400&HW-CC-Sign=2C177B8891351336293C9D4E7692C3E73FF3707005B39136AEF8401E68E2D333 "点击放大")
94
+
95
+ 开发步骤如下:
96
+
97
+ 1. 注册地图点击事件监听器,在回调函数中将触点的地理坐标持久化存储至destination_Position状态变量中。
98
+
99
+ ```
100
+ // Destination location information obtained based on the map click event.
101
+ @StorageLink('destination_Position') @Watch('changeDestinationPositionMark') destination_Position: mapCommon.LatLng =
102
+ {
103
+ longitude: 0,
104
+ latitude: 0
105
+ };
106
+ // ...
107
+ aboutToAppear(): void {
108
+ // ...
109
+ // Map initialization callback
110
+ this.callback = async (err, mapController) => {
111
+ if (!err) {
112
+ // ...
113
+ let mapOnclickCallBack = async (position: mapCommon.LatLng) => {
114
+ if (this.isStartNavigation) {
115
+ // If the navigation has started, you are not allowed to click on the mobile phone.
116
+ this.isBarShow = false;
117
+ } else {
118
+ // Send destination information to the watch for synchronization
119
+ this.connectUtils.sendMessage(JSON.stringify(new CommunicationInformation(1, undefined, position)));
120
+ // Modify destination_Position to trigger changeDestinationPositionMark
121
+ // To refresh the destination mark on the map.
122
+ this.destination_Position = position;
123
+ this.isBarShow = true;
124
+ }
125
+ };
126
+ this.mapEventManager.on('mapLoad', mapLoadCallback);
127
+ this.mapEventManager.on('mapClick', mapOnclickCallBack);
128
+ }
129
+ };
130
+ // Obtains the connected watch device and subscribes to the watch's message sending event.
131
+ this.connectUtils.getConnectedDevices();
132
+ try {
133
+ this.connectUtils.notifyClient = wearEngine.getNotifyClient(this.getUIContext().getHostContext());
134
+ } catch (err) {
135
+ hilog.error(0x0000, TAG,
136
+ `Failed to get notify client. Cause code: ${err.code}, message: ${err.message}`);
137
+ }
138
+ }
139
+ ```
140
+ 2. 监听destination_Position变化,调用[addMarker()](https://developer.huawei.com/consumer/cn/doc/harmonyos-references/map-map-mapcomponentcontroller#addmarker)动态更新目的地地图标记。
141
+
142
+ ```
143
+ // Destination location information obtained based on the map click event.
144
+ @StorageLink('destination_Position') @Watch('changeDestinationPositionMark') destination_Position: mapCommon.LatLng =
145
+ {
146
+ longitude: 0,
147
+ latitude: 0
148
+ };
149
+ // ...
150
+ /*
151
+ * Triggered when destination_Position changes.
152
+ * Used to refresh the destination marker on the map when the destination changes.
153
+ */
154
+ async changeDestinationPositionMark() {
155
+ if (this.mapController) {
156
+ this.mapController.clear();
157
+ let markerOptions: mapCommon.MarkerOptions = {
158
+ position: this.destination_Position,
159
+ rotation: 0,
160
+ visible: true,
161
+ zIndex: 0,
162
+ alpha: 1,
163
+ anchorU: 0.5,
164
+ anchorV: 1,
165
+ clickable: true,
166
+ draggable: true,
167
+ flat: false,
168
+ };
169
+ try {
170
+ await this.mapController.addMarker(markerOptions);
171
+ } catch (err) {
172
+ hilog.error(0x0000, TAG,
173
+ `Failed to add marker. Cause code: ${err.code}, message: ${err.message}`);
174
+ }
175
+ }
176
+ }
177
+ ```
178
+
179
+ **路径导航:**
180
+
181
+ 1. 根据当前位置与目的地位置,生成导航路线信息。
182
+
183
+ ```
184
+ Button($r('app.string.DrawRoute'))
185
+ .width(158)
186
+ .height(40)
187
+ .onClick(async () => {
188
+ let params: navi.RouteParams = {
189
+ origins: [
190
+ {
191
+ latitude: this.myLocation.latitude,
192
+ longitude: this.myLocation.longitude
193
+ }
194
+ ],
195
+ destination: this.destination_Position,
196
+ language: 'zh_CN'
197
+ };
198
+ const result = await navi.getWalkingRoutes(params);
199
+ let drawRouteUtil: DrawRouteUtils = new DrawRouteUtils();
200
+ // Draw a route on a map using navigation route information.
201
+ drawRouteUtil.drawRoute(this.mapController, result.routes[0].steps[0].roads)
202
+ })
203
+ ```
204
+ 2. 通过调用[addPolyline()](https://developer.huawei.com/consumer/cn/doc/harmonyos-references/map-map-mapcomponentcontroller#addpolyline)接口,结合导航路线信息,绘制可视化路径。
205
+
206
+ ```
207
+ /*
208
+ * Draw a navigation route on a map
209
+ * The first parameter needs to be transferred to MapComponentController to operate the map.
210
+ * The second parameter needs to pass in the navigation information to draw the navigation route.
211
+ * @param mapController : map controller for drawing markers or routes on a map.
212
+ * @param steps : Navigation route information obtained through the Map Kit
213
+ */
214
+ async drawRoute(mapController: map.MapComponentController | undefined, steps: Array<navi.RouteRoad>) {
215
+ if (mapController === undefined) {
216
+ hilog.info(0X0000, TAG, 'Drawing failed');
217
+ return;
218
+ }
219
+ let roads: Array<mapCommon.LatLng> = [];
220
+ let des_arr: RouteInfomation[] = [];
221
+ for (let index = 0; index < steps.length; index++) {
222
+ for (let i = 0; i < steps[index].polyline.length; i++) {
223
+ roads.push(steps[index].polyline[i]);
224
+ des_arr.push(new RouteInfomation(steps[index].action as string, steps[index].distance, steps[index].duration))
225
+ }
226
+ }
227
+
228
+ // The route segment information is stored in the AppStorage and then sent to the watch through the WearEngine.
229
+ AppStorage.setOrCreate('routeInfomation', des_arr);
230
+
231
+ let polylineOption: mapCommon.MapPolylineOptions = {
232
+ points: roads,
233
+ color: 0xFF089C57,
234
+ jointType: mapCommon.JointType.ROUND,
235
+ width: 24
236
+ };
237
+
238
+ // Use MapComponentController to draw a route on a map
239
+ mapController.addPolyline(polylineOption).catch((error: Error) => {
240
+ let err = error as BusinessError;
241
+ if (err.code) {
242
+ hilog.error(0x0000, TAG,
243
+ `Failed to add poly line. Cause code: ${err.code}, message: ${err.message}`);
244
+ }
245
+ }).then(() => {
246
+ hilog.info(0X0000, TAG, 'Drawing success');
247
+ });
248
+ }
249
+ ```
250
+
251
+ ![](https://contentcenter-vali-drcn.dbankcdn.cn/pvt_2/DeveloperAlliance_scene_100_1/4d/v3/L3TsC4qARwGfTfRX0_J1-A/note_3.0-zh-cn.png?HW-CC-KV=V1&HW-CC-Date=20260623T075621Z&HW-CC-Expire=86400&HW-CC-Sign=4313DD30CF4779B85CE7B0A69B5A906EC14811ED405A539325E2DD02621B6115)
252
+
253
+ 地图实现依赖Map Kit能力,使用前首先需要申请Map服务,详情请参考Map Kit[开发准备](https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/map-config-agc)。
254
+
255
+ ## 互联通信
256
+
257
+ 智能穿戴设备协同导航系统通过设备间通信协议实现双端数据同步,各类消息通过头部TAG标志位进行区分,具体消息类型定义如下表所示:
258
+
259
+ **表2** 消息实体类消息类型表
260
+
261
+ | 消息类型 | TAG标志位取值 | 作用 |
262
+ | --- | --- | --- |
263
+ | 路线信息 | 0 | 用于同步导航路线信息。 |
264
+ | 目的地定位 | 1 | 用于同步目的地定位信息。 |
265
+ | 信号信息 | 2及以上 | 用于信号,包括手机侧告知手表侧导航已开启、手表侧告知手机侧导航结束等。 |
266
+
267
+ 在对端消息监听(手机端与智能穿戴设备端均使用,监听对方发来的消息)的回调中,会对发送的消息进行转码,并根据TAG标志位进行数据的存储,分别用于不同的逻辑。
268
+
269
+ ```
270
+ /**
271
+ * Callback Method for Listening to Peer Communication.
272
+ */
273
+ private onMsgCallback: Callback<wearEngine.P2pMessage> = (data: wearEngine.P2pMessage): void => {
274
+ let str: string = '';
275
+ // Decodes the intercepted content into a character string.
276
+ if (canIUse('SystemCapability.Utils.Lang')) {
277
+ let decoder: util.TextDecoder = util.TextDecoder.create();
278
+ str = decoder.decodeToString(data.content);
279
+ }
280
+ // Convert the JSON character string to the CommunicationInformation type.
281
+ let communicationInformation: CommunicationInformation = JSON.parse(str);
282
+ // Determine the information type based on the tag.
283
+ if (communicationInformation.tag === 0) {
284
+ // When tag is set to 0,Indicates that the transferred information is path description information,
285
+ // which is stored in AppStorage to refresh the watch navigation page.
286
+ AppStorage.setOrCreate('route_information', communicationInformation.routeInfomation);
287
+ } else if (communicationInformation.tag === 1) {
288
+ // When tag is set to 1, Indicates that the transferred information is destination location information
289
+ // and is saved to the AppStorage for synchronizing the destination logo of the mobile phone and watch.
290
+ AppStorage.setOrCreate('destination_Position', communicationInformation.location);
291
+ } else if (communicationInformation.tag === 2) {
292
+ // Signal sent from your phone to your watch when navigation starts, indicating that navigation starts.
293
+ AppStorage.setOrCreate('isStartNavigation', true);
294
+ } else {
295
+ // Signal sent from your watch to your phone when navigation ends, indicating that navigation ends.
296
+ AppStorage.setOrCreate('isStartNavigation', false);
297
+ }
298
+ }
299
+ ```
300
+
301
+ ![](https://contentcenter-vali-drcn.dbankcdn.cn/pvt_2/DeveloperAlliance_scene_100_1/a5/v3/sunI3qY4RB6ol0bOWC7j1g/note_3.0-zh-cn.png?HW-CC-KV=V1&HW-CC-Date=20260623T075621Z&HW-CC-Expire=86400&HW-CC-Sign=415293228D2FD6273ACB9F11EE6B1ACD51A348019D90C47D4F5384E7DB52C0DF)
302
+
303
+ 手机手表互联通信的具体实现,详情可参考[智能穿戴应用开发](https://developer.huawei.com/consumer/cn/doc/best-practices/bpta-smartwatch)与[应用间消息通信](https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/p2p_communication)。
304
+
305
+ ## 消息通知
306
+
307
+ 在导航启动阶段,手机端需通过WearEngine提供的notify()接口向智能穿戴设备端发送通知消息,告知手表端导航开始。
308
+
309
+ ```
310
+ /*
311
+ * Method of notifying a message to watch.
312
+ */
313
+ notifyMessage() {
314
+ // Configure the notification content.
315
+ // Including the package name of the notification source, notification title, and notification content.
316
+ let type1Notification: wearEngine.Notification = {
317
+ type: wearEngine.NotificationType.NOTIFICATION_WITHOUT_BUTTONS,
318
+ bundleName: 'com.example.smartwatchmapnavigation',
319
+ title: 'smartwatchmapnavigation',
320
+ text: 'walk navigation start',
321
+ }
322
+ let options: wearEngine.NotificationOptions = {
323
+ notification: type1Notification,
324
+ onAction: (feedback: wearEngine.NotificationFeedback) => {
325
+ hilog.info(0x000, TAG,
326
+ `one button notify get feedback is ${feedback.action ? feedback.action : feedback.errorCode}`);
327
+ }
328
+ }
329
+
330
+ // Sends a notification to the watch based on notifyClient.
331
+ // This method can be invoked only by apps on mobile phones.
332
+ this.notifyClient!.notify(this.deviceRandomId, options).then(result => {
333
+ hilog.info(0x000, TAG, `Succeeded in sending notification.`);
334
+ }).catch((error: BusinessError) => {
335
+ hilog.error(0x000, TAG, `Failed to send notification. Code is ${error.code}, message is ${error.message}`);
336
+ })
337
+ }
338
+ ```
339
+
340
+ ![](https://contentcenter-vali-drcn.dbankcdn.cn/pvt_2/DeveloperAlliance_scene_100_1/03/v3/v3Zi1vlcSOKSDjlvvNF6Xw/note_3.0-zh-cn.png?HW-CC-KV=V1&HW-CC-Date=20260623T075621Z&HW-CC-Expire=86400&HW-CC-Sign=66043171E8833E7A2D263B0316C7A0329DC1AED42FA19D233C1F939B61352B20)
341
+
342
+ 消息通知依赖wearengine服务,详情可参考[智能穿戴应用开发](https://developer.huawei.com/consumer/cn/doc/best-practices/bpta-smartwatch)与[穿戴设备模板化通知](https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/device_notification)。
343
+
344
+ ## 振感提示
345
+
346
+ 在导航过程中,智能穿戴设备需要使用振动向开发者提供振感提示。
347
+
348
+ ```
349
+ // Vibration Tools Class
350
+ export class VibratorUtil {
351
+ /*
352
+ * The method of Vibration.
353
+ */
354
+ Vibrator() {
355
+ try {
356
+ // Use the startVibration method to enable vibration and set the duration.
357
+ vibrator.startVibration({
358
+ type: 'time',
359
+ duration: 1000,
360
+ }, {
361
+ id: 0,
362
+ usage: 'alarm'
363
+ }, (error: BusinessError) => {
364
+ if (error) {
365
+ hilog.error(0x0000, TAG, `Failed to start vibration. Code: ${error.code}, message: ${error.message}`);
366
+ return;
367
+ }
368
+ hilog.info(0x0000, TAG, 'Succeed in starting vibration');
369
+ });
370
+ } catch (err) {
371
+ let e: BusinessError = err as BusinessError;
372
+ hilog.error(0x00000, TAG, `An unexpected error occurred. Code: ${e.code}, message: ${e.message}`);
373
+ }
374
+ }
375
+ }
376
+ ```
377
+
378
+ ![](https://contentcenter-vali-drcn.dbankcdn.cn/pvt_2/DeveloperAlliance_scene_100_1/1f/v3/9x2MvcvcTD-8gnVDMB_ceg/note_3.0-zh-cn.png?HW-CC-KV=V1&HW-CC-Date=20260623T075621Z&HW-CC-Expire=86400&HW-CC-Sign=0E9B7F60E96BE448CC5F588BFBAA4D768E4AB429B0BBC273D6F3630AFA2E5E7A)
379
+
380
+ 使用振动需要进行权限申请,详情可参考[振动开发指导(ArkTS)](https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/vibrator-guidelines)。
381
+
382
+ #### 示例代码
383
+
384
+ - [基于WearEngine实现协同导航应用](https://gitcode.com/harmonyos_samples/SmartWatchMapNavigation)
@@ -0,0 +1,225 @@
1
+ # 性能体验设计
2
+
3
+ > 来源: https://developer.huawei.com/consumer/cn/doc/best-practices/bpta-smooth-application-design
4
+ > 文档标识(fileName): bpta-smooth-application-design
5
+ > 目录(catalogName): best-practices
6
+ > 语言: cn
7
+ > 更新时间: 2026-06-23 03:39:23
8
+ > 导航地址: /hmos/hmos-dp1
9
+
10
+ ---
11
+ #### 概述
12
+
13
+ 在应用开发中,确保用户使用应用程序时体验无缝、自然、舒适。流畅体验能提高用户满意度,增强用户好感,影响应用成功。
14
+
15
+ 感知流畅性不等同于系统性能。优秀的系统性能是保证用户感知流畅的必要条件,但良好的系统性能不一定带来优秀的感知流畅性。系统性能、资源调度能力、图形渲染技术、硬件启动速度等指标必须通过界面反馈才能影响用户感知。因此,应用程序的界面设计、交互体验及性能优化应当经过精心考量。例如,应用程序启动加载的流畅性,需要通过用户从点击动作到完全看到界面首页内容的体验来衡量,包括首页是否及时出现、画面绘制过程是否自然连贯等因素,这些都会综合影响用户的感知流畅性。
16
+
17
+ 感知流畅性是指手势触控、视觉感知和心理预期三者合一的综合体验。具体包括两方面:
18
+
19
+ 一是交互操作到响应开始的瞬时性,如点击响应时延和滑动响应时延。
20
+
21
+ 二是响应开始到加载完成过程中,动效和加载的同步以确保视觉感官的顺滑,如最大连续丢帧率和动效时长。
22
+
23
+ 总体来说,手势触控的完成时延和视觉感知的加载效果应符合心理预期。应用流畅体验的设计可以通过以下步骤实现:
24
+
25
+ 1. 用户研究及目标制定:进行用户研究,了解目标用户群体的需求、偏好、行为习惯等信息。使用用户访谈、问卷调查、用户行为分析等方法,获取用户信息,为后续设计提供基础数据。根据用户研究结果,制定明确的用户体验目标,确定应用需达到的用户体验效果。
26
+ 2. 信息架构设计是用户体验设计的重要环节,关注信息的组织和呈现以满足用户需求。
27
+ 3. 用户体验设计包括交互体验设计和视觉体验设计。交互体验设计涉及应用的交互界面,如页面结构、导航设计、交互元素布局和交互方式设计,确保用户操作顺畅,减少操作犹豫和错误。视觉体验设计涵盖应用的视觉元素,如动画设计、界面风格、色彩搭配和图标设计,以提升用户的视觉体验和吸引力。
28
+ 4. 设计应用原型并进行用户测试。收集用户反馈,了解使用体验和问题,为后续优化提供依据。
29
+ 5. 用户反馈和改进:发布应用后,及时收集用户反馈,了解使用体验和遇到的问题,持续优化应用,以满足用户需求并提升满意度。
30
+
31
+ 通过这些设计流程,不仅能提高用户满意度和忠诚度,还能降低应用风险,提升用户好感,增强市场竞争力。接下来,将首先介绍用户感知的整体指标和测评方法,然后分别阐述交互流畅体验和视觉流畅体验的设计原则及评价指标。
32
+
33
+ **图1** 感知流畅性示意图
34
+ ![](https://contentcenter-vali-drcn.dbankcdn.cn/pvt_2/DeveloperAlliance_scene_100_1/27/v3/s-DZQPgrQfq2NlQpTliKgg/zh-cn_image_0000002194011640.png?HW-CC-KV=V1&HW-CC-Date=20260623T075633Z&HW-CC-Expire=86400&HW-CC-Sign=DB841A97785992A23BA044F8A66E1856EB787ABCEF59B9426A05BC8C961D5E55 "点击放大")
35
+
36
+ #### 用户体验设计
37
+
38
+ 用户体验设计是一种以用户为中心的设计方法,旨在满足用户需求并创造愉悦、高效、流畅和有意义的产品体验。这需要开发者深入了解用户需求和行为,以便为他们提供最佳的交互和视觉体验。
39
+
40
+ 在交互体验设计中,关注用户界面直观性、操作便捷性和系统响应速度。在视觉体验设计中,注重产品外观、动画效果和色彩搭配,创造愉悦的视觉效果。
41
+
42
+ 在移动终端应用开发中,完成时延是指用户操作移动终端时,从输入触控指令到界面完全刷新结束并达到可以阅读的稳定状态所用时间,包括响应时延、动效时长以及加载完成时延。完成时延在用户体验设计中扮演着关键的角色,直接影响用户对产品的满意度和使用体验。其中,响应时延是评测交互流畅体验的关键指标,将在[《交互流畅体验设计》](#section1552815191113)中展开详解。动效时长、加载完成时延是评测视觉流畅体验的关键,动效时长由三方应用根据实际场景设计,并由三方应用进行保障;加载完成时延将在[《视觉流畅体验设计》](#section1374318811135)中展开详解。
43
+
44
+ #### 流畅评测指标
45
+
46
+ 完成时延反映了用户对响应速度的感受,主要影响触控交互的及时性和愉悦性。当完成时延低于特定阈值时,用户的流畅体验将不再提升。具体推荐指标如下表所示:
47
+
48
+ **表1** 完成时延流畅性推荐指标
49
+
50
+ | 一级指标 | 二级指标 | 推荐指标 |
51
+ | --- | --- | --- |
52
+ | 完成时延 | 控件响应完成时延 | t完成时延≤600ms |
53
+ | 控件出现完成时延 |
54
+ | 第三方应用启动完成时延 | t完成时延≤1100ms |
55
+ | 第三方应用页面切换完成时延 |
56
+ | 应用内点击操作完成时延 | t完成时延≤900ms |
57
+
58
+ ![](https://contentcenter-vali-drcn.dbankcdn.cn/pvt_2/DeveloperAlliance_scene_100_1/50/v3/6Uxq9_gSSJmVuTxOWzmyvw/note_3.0-zh-cn.png?HW-CC-KV=V1&HW-CC-Date=20260623T075633Z&HW-CC-Expire=86400&HW-CC-Sign=9D47DEBEC123D77F405C0DF9996F267CD20A22178A52000F3203DC36732BEE20)
59
+
60
+ 表格中名词解释:
61
+
62
+ - 第三方应用:指由独立开发者或公司开发并提供的应用程序,通过应用商店或其他渠道下载安装,如社交媒体应用、游戏、工具类应用等。
63
+
64
+ - 控件出现:用户触发调用机制后,控件在界面中显示的过程。
65
+ - 控件响应:针对控件进行特定操作时,控件通过形状、颜色、位置变化等方式给予反馈。
66
+
67
+ 完成时延指标推荐测试的场景任务如下表所示:
68
+
69
+ **表2** 完成时延推荐测试任务
70
+
71
+ | 一级指标 | 二级指标 | 启动方式 | 示例任务 |
72
+ | --- | --- | --- | --- |
73
+ | 完成时延 | 第三方应用启动 | 冷启动 | 社交软件启动、支付软件启动等 |
74
+ | 第三方应用页面切换 | 首次启动 | 消息列表进入对话详情 |
75
+ | 控件出现完成时延 | 首次启动 | 输入法键盘弹出 |
76
+ | 控件响应完成时延 | 首次启动 | 设置打开蓝牙 |
77
+
78
+ ![](https://contentcenter-vali-drcn.dbankcdn.cn/pvt_2/DeveloperAlliance_scene_100_1/f/v3/EpMssgleRX2DHr5u2xL0Bg/note_3.0-zh-cn.png?HW-CC-KV=V1&HW-CC-Date=20260623T075633Z&HW-CC-Expire=86400&HW-CC-Sign=1AA87D107EA9843F665729E7E806C650B2A24BF35A301F7DF93CE0761944125F)
79
+
80
+ 表格名词解释:
81
+
82
+ 冷启动:应用启动时后台没有该应用的进程,系统通过重新创建一个新的进程分配给该应用的方式来启动。
83
+
84
+ 根据完成时延进行评测并优化,优化前后对比图如下所示。
85
+
86
+ **图2** 应用启动优化前后对比图
87
+ ![](https://contentcenter-vali-drcn.dbankcdn.cn/pvt_2/DeveloperAlliance_scene_100_1/21/v3/koHo3GpSTL-kZkG0t3nYlQ/zh-cn_image_0000002193852052.gif?HW-CC-KV=V1&HW-CC-Date=20260623T075633Z&HW-CC-Expire=86400&HW-CC-Sign=10A56F972761D4100092BC4ABD458B5823DE74DB0DCBCCFA3D0426F3C826D9A4 "点击放大")
88
+
89
+ #### 交互流畅体验设计
90
+
91
+ 交互体验设计是产品与用户之间沟通的桥梁,旨在创造令人愉悦、高效的用户体验。流畅的交互体验使用户与产品之间的互动更加自然、无缝,从而提升用户满意度和忠诚度。流畅的交互体验能减少用户认知负担,提高操作效率,增强用户对产品的信任感和使用愉悦感。因此,交互设计是提升产品竞争力和用户体验的重要环节。要保证交互体验的流畅性,包含以下步骤:
92
+
93
+ 1. 根据设计原则设计交互界面,布局交互元素。
94
+ 2. 根据交互方式选择触屏手势:正确选择触屏手势可使用户操作更加直观、自然,提升用户体验。触屏手势分为基础手势和敲击两类,设计师需深入了解用户行为和习惯,结合具体场景选择合适的触屏手势。
95
+ 3. 根据评测指标评估交互流畅性:评价指标提供客观标准,评判交互体验质量。监测分析评价指标,建立用户体验直观认识,发现交互体验问题,采取优化措施,确保交互流畅性符合用户期望。
96
+ 4. 根据评测结果迭代优化:开发者可以根据评测出来的结果,对应用进行迭代优化,满足用户的需求并提供更好的体验。具体关于点击响应的优化,可以参考最佳实践文章[《点击响应时延分析》](https://developer.huawei.com/consumer/cn/doc/best-practices/bpta-click-to-click-response-optimization)。
97
+
98
+ ## 设计原则
99
+
100
+ 遵循设计规范和原则是交互界面设计的基础。它们帮助开发者构建合理、易用和符合用户需求的交互界面。在设计过程中,需要遵守以下原则:
101
+
102
+ - 一致性是指交互界面的呈现形式和交互元素的操作保持一致,以便用户在不同页面或模块间轻松理解和使用。遵循一致性原则可以减少用户认知和记忆负担,提高操作效率。用户在一个页面或模块上学会的操作方式可以迁移到其他页面或模块上,无需重新学习。
103
+ - 简洁易用的设计原则是指去除冗余和复杂的功能及其元素,使用清晰明了的元素,避免信息过载。过多的元素会分散用户的注意力,使用户无法集中在主要功能上。简洁易用的设计能降低用户的认知负担,提高使用效率,使用户更专注于完成任务,提升用户体验。
104
+ - 反馈清晰:用户操作后,应用需立即响应。良好的反馈机制使用户明确感知与应用的交互,提升流畅性。用户操作时,应用应即时反馈,确认操作成功,并指导下一步操作。这增强用户对系统的控制感和信心,提高满意度和体验质量。
105
+
106
+ 在交互界面设计中,开发者应结合具体产品特点和用户需求,灵活应用设计原则。
107
+
108
+ ## 触屏手势
109
+
110
+ [触屏手势](https://developer.huawei.com/consumer/cn/doc/design-guides/hmi-touchscreen-0000001928273206#section328711113449)是用户在触摸屏幕上进行的特定动作,用于与设备交互。基础手势是最基本的触屏手势,包括常见的点击、双击、长按、滑动等动作。基础手势不仅简单易学,而且为用户提供了直观的操作方式,使用户能够更加轻松地进行交互和操作。
111
+
112
+ ## 流畅评测指标
113
+
114
+ 响应时延指用户操作移动终端时,从输入触控指令到系统反馈的时间。响应时延分为点击和滑动响应时延。
115
+
116
+ - 点击响应时延:指用户在点击某个按钮或链接后,系统响应并显示相应内容所花费的时间。
117
+ - 滑动响应时延:指用户在滑动页面或应用时,系统响应并更新内容所花费的时间。
118
+
119
+ 响应时延显著影响用户对触控交互的及时性、控制感和愉悦性的体验。用户期望系统快速响应其操作,以获得即时反馈。响应时延应控制在用户可接受的最长等待时间以内。研究显示,用户对响应时延的感知存在阈限。当响应时延超过这一阈限时,响应时延越短,用户的流畅体验越好。但当响应时延接近或低于阈限时,继续减少响应时延对流畅体验的提升不再明显。因此,平衡响应时延与用户感知阈限至关重要。
120
+
121
+ 点击响应时延可细分为应用启动响应时延、页面切换响应时延和控件出现响应时延。滑动响应时延可细分为抛滑响应时延和拖滑响应时延。感知流畅的推荐指标如下表所示:
122
+
123
+ **表3** 响应时延流畅性推荐指标
124
+
125
+ | 一级指标 | 二级指标 | 推荐指标 |
126
+ | --- | --- | --- |
127
+ | 点击响应时延 | 应用启动响应时延 | t响应时延≤100ms |
128
+ | 页面切换响应时延 |
129
+ | 控件出现响应时延 |
130
+ | 滑动响应时延 | 抛滑响应时延 | t响应时延≤80ms |
131
+ | 拖滑响应时延 | t响应时延≤60ms |
132
+
133
+ 响应时延推荐测试的场景任务见表。
134
+
135
+ **表4** 响应时延推荐测试任务
136
+
137
+ | 一级指标 | 二级指标 | 启动方式 | 示例任务 |
138
+ | --- | --- | --- | --- |
139
+ | 点击响应时延 | 应用启动响应时延 | 冷启动 | 三方应用启动 |
140
+ | 页面切换响应时延 | 首次启动 | 三方应用页面跳转 |
141
+ | 控件出现响应时延 | 首次启动 | 短消息对话内输入法键盘弹出 |
142
+ | 滑动响应时延 | 抛滑 | 首次启动 | 列表上下抛滑 |
143
+ | 拖滑 | 首次启动 | 列表上下拖滑 |
144
+
145
+ #### 视觉流畅体验设计
146
+
147
+ 视觉体验设计是指在产品设计过程中,重点关注用户在视觉上的感知和体验,以实现美观、舒适、流畅的设计目标。具体步骤包括整体风格设计、色彩搭配和排版布局。动效设计是保证应用流畅性的关键步骤,通过精心设计的动效,用户可以更直观地理解界面变化和交互操作,从而提升对产品的满意度和使用体验。确保视觉体验流畅性的步骤如下:
148
+
149
+ 1. 根据设计原则设计动效:设计动效时,参考用户体验和交互设计原则,确定动效的类型、时长、速度和效果。考虑用户心理认知和习惯,确保动效引导用户完成操作,提升操作效率和愉悦感。
150
+ 2. 根据动效选择实现方式:在确定了动效的设计原则后,需要根据具体的技术和平台选择合适的实现方式。选择合适的实现方式需要考虑到动效的复杂度、性能要求、跨平台兼容性等。具体可以参考最佳实践[《动画使用指导》](https://developer.huawei.com/consumer/cn/doc/best-practices/bpta-fair-use-animation)与[《页面间转场》](https://developer.huawei.com/consumer/cn/doc/best-practices/bpta-page-transition)。
151
+ 3. 根据评测指标评估动效流畅性:设计实现后,进行动效流畅性评估,指标包括加载时延、最大连续丢帧数等。评估可以发现解决性能问题,确保用户获得流畅交互体验。
152
+ 4. 根据评测结果迭代优化:开发者可以根据评测出来的结果,对应用进行迭代优化,满足用户的需求并提供更好的体验。具体关于丢帧的优化,具体可以参考最佳实践[《长列表加载丢帧优化》](https://developer.huawei.com/consumer/cn/doc/best-practices/bpta-best-practices-long-list)。
153
+
154
+ ## 设计原则
155
+
156
+ 动效可以让用户界面更加生动有趣,增加用户对产品的兴趣,从而提升用户体验。详细的设计原则请参考动效指南中《[设计原则](https://developer.huawei.com/consumer/cn/doc/design-guides/animation-design-principles-0000001750237392)》章节。
157
+
158
+ ## 动效
159
+
160
+ 动效分为动画和效果属性,动画负责如何动,效果属性负责控件在哪显示以及显示的内容,效果属性简称属性,属性包括布局属性、背景属性和外观属性等。动画会逐帧驱动属性的变化,以此来产生一帧帧的动画效果。常见的动效有转场动效、属性动效等,发生转场特别是涉及到大面积UI的改变时,应注意前后两页的背景是否一致,避免因为背景一帧切换造成闪烁。如果一定要切换背景颜色,可以使用动画进行过渡。详细内容请参考通用设计指南中的《[动效](https://developer.huawei.com/consumer/cn/doc/design-guides/design-animation-0000001750078484)》章节。
161
+
162
+ 在涉及多个动效的开发场景中,需注意动效之间的配合,避免因动画开始时间、动画曲线等因素的差异导致动效异常。
163
+
164
+ ## 流畅评测指标
165
+
166
+ 设备界面感知流畅的客观指标主要包括:
167
+
168
+ - 加载完成时延:指从页面加载开始到应用所有占位符加载完成所需要的时间。
169
+ - 最大连续丢帧数:指从页面开始有响应变化到页面结束刷新的过程中,由于显示器画面刷新频率低于预设的画面帧率而未能正常呈现的最大连续帧数。一般而言,当连续值超过3时,用户可以明显感知到卡顿掉帧,数值越大卡顿时间越长。
170
+
171
+ (1)加载完成时延反应的是新界面出现后,元素控件出现过程的长短,主要影响用户对触控交互及时性、连续性和愉悦性的评价。
172
+
173
+ 加载完成时延反映新页面出现后,元素控件显示所需的时间。这直接影响用户对触控交互及时性、连续性和愉悦性的评价。较长的加载完成时延会降低用户体验,用户可能因等待时间过长而感到不耐烦,甚至放弃使用应用。优化加载完成时延可提高用户满意度和留存率。具体加载完成时延的感知流畅性如下表所示:
174
+
175
+ **表5** 加载完成时延感知流畅性推荐指标
176
+
177
+ | 一级指标 | 二级指标 | 推荐指标 |
178
+ | --- | --- | --- |
179
+ | 加载完成时延 | 启动加载完成时延 | t动效时长≤1100ms |
180
+
181
+ 加载完成时延指标推荐测试的场景任务见下表。
182
+
183
+ **表6** 加载完成时延推荐测试任务
184
+
185
+ | 一级指标 | 二级指标 | 启动方式 | 示例任务 |
186
+ | --- | --- | --- | --- |
187
+ | 加载完成时延 | 启动加载完成时延 | 冷启动 | 三方支付应用启动 |
188
+
189
+ (2)最大连续丢帧数。
190
+
191
+ 最大连续丢帧数反映画面连贯性和卡顿情况。该数值越接近0,用户体验越流畅。根据下表评级感知流畅性:
192
+
193
+ **表7** 最大连续丢帧数感知流畅性推荐指标
194
+
195
+ | 一级指标 | 二级指标 | 推荐指标 |
196
+ | --- | --- | --- |
197
+ | 最大连续丢帧数 | 页面上下滑动最大连续丢帧数 | 0帧 |
198
+
199
+ 最大连续丢帧数推荐测试场景任务如下表所示。
200
+
201
+ **表8** 最大连续丢帧数推荐测试任务
202
+
203
+ | 一级指标 | 二级指标 | 启动方式 | 示例任务 |
204
+ | --- | --- | --- | --- |
205
+ | 最大连续丢帧数 | 上下滑动 | 冷启动、高速滑动 | 三方应用首页滑动 |
206
+
207
+ 根据最大连续丢帧数的评测指标进行优化,优化前后对比图如下所示。
208
+
209
+ **图3** 最大连续丢帧数优化前后对比图
210
+ ![](https://contentcenter-vali-drcn.dbankcdn.cn/pvt_2/DeveloperAlliance_scene_100_1/71/v3/GSUIfZPUTICsaeI1VW2gpA/zh-cn_image_0000002194011636.gif?HW-CC-KV=V1&HW-CC-Date=20260623T075633Z&HW-CC-Expire=86400&HW-CC-Sign=B87734D53DAC7B012694985AACF0F9BA9A13C245682965FEA7BA05FEB807A992 "点击放大")
211
+
212
+ #### 总结
213
+
214
+ 流畅、直观的用户界面能增强用户的参与感和愉悦感,提升对产品或服务的满意度和使用体验。本文重点介绍如何从交互流畅性和视觉流畅性两方面设计和实现流畅应用。
215
+
216
+ - 交互流畅体验的基础要求包括符合用户习惯、风格一致和反馈清晰。
217
+
218
+ 符合用户习惯意味着应用程序的交互设计应符合用户操作习惯,让用户快速上手且不感到陌生。风格一致表示应用程序的整体风格和交互方式应保持一致,避免界面风格突变或操作逻辑变化。反馈清晰则意味着应用程序在用户操作后,能清晰给出反馈,告知操作结果或当前状态,避免用户疑惑。这些基础要求的满足使用户在使用应用程序时感到自然舒适。
219
+ - 视觉流畅体验的基础要求包括帧率稳定、响应及时和加载及时。
220
+
221
+ 帧率稳定指应用程序运行时能保持稳定的帧率输出,避免卡顿和画面闪烁,确保用户感受到流畅的界面切换和动画效果。响应及时指应用程序对用户操作快速响应,增强交互的即时性和高效性。加载及时指应用快速加载并显示所需内容和功能,避免长时间等待或卡顿,提升用户的流畅体验和参与感。这些基础要求的满足可让用户感受到应用程序的高效性和流畅性。
222
+
223
+ 这两部分基础要求共同确保了应用程序的感知流畅性,并通过完成时延指标直观展示了用户的满意度和使用体验。
224
+
225
+ 在应用体验设计过程中,为了提升用户感知的流畅度,开发者需在设计和优化移动应用程序时考虑完成时延的影响。具体措施包括:优化代码、减少不必要的后台任务、使用高效的算法和数据结构,以降低时延。合理的系统架构和服务器性能同样对减少响应时延至关重要。除了技术优化,开发者还需关注响应时延对用户体验的影响。通过设计直观的交互界面、合理的动画效果及优化用户交互流程,可以进一步降低用户感知的时延。