文件最后提交记录最后更新时间
8 个月前
4 个月前
1 个月前
8 个月前
8 个月前
8 个月前
1 个月前
8 个月前
8 个月前
1 个月前
8 个月前
README

应用内状态管理和其他常见问题

介绍

本工程帮助开发者更好地理解应用内状态管理的常见问题。该工程中展示的代码详细描述可查如下链接:

应用内状态变管理和其他常见问题

效果预览

首页
faq_application

使用说明

  1. 在主界面,可以点击对应卡片,选择需要参考的组件示例。
  2. 在对应的卡片页面中,点击按钮“New Worker”。
  3. 查看日志,反例有对应的报错信息,正例有对应的日志信息。

工程目录

/src
├── /main
│   ├── /ets
│   │   ├── /entryability
│   │   ├── /entrybackupability
│   │   ├── /pages
│   │   │   ├── DecUseIsolationNeg.ets
│   │   │   ├── DecUseIsolationNPos.ets
│   │   │   ├── Index.ets
│   │   │   ├── LazyImportFuncNeg.ets
│   │   │   ├── LazyImportFuncPos.ets
│   │   │   ├── LazyImportNeg.ets
│   │   │   ├── LazyImportObservedNeg.ets
│   │   │   ├── LazyImportObservedPos.ets
│   │   │   ├── LazyImportPos.ets
│   │   │   ├── UseIsolationAdditionPos.ets       
│   │   │   ├── UseIsolationFuncNeg.ets
│   │   │   ├── UseIsolationFuncPos.ets
│   │   │   ├── UseIsolationObservedNeg.ets
│   │   │   └── UseIsolationObservedPos.ets
│   │   ├── /wokers
│   │   │   ├── LazyImportWorkerNeg.ets
│   │   │   ├── LazyImportWorkerPos.ets
│   │   │   ├── UseIsolationWorkerNeg.ets
│   │   │   └── UseIsolationWorkerPos.ets
│   └── /resources
│       ├── ...
├─── ... 

具体实现

  1. 并发线程中未调用包含装饰器的文件导致appfreeze,是由于并发线程在逐层解析文件依赖时,最终会加载到定义@Observed装饰器的文件,从而触发该错误。
  2. 懒加载包含装饰器的文件可以避免1中对应的问题,子线程则不会加载到对应文件。
  3. 并发线程中调用了包含装饰器的文件导致appfreeze,使用懒加载已无法解决该问题,并发线程逐层解析文件依赖时,最终会加载到定义@Observed装饰器的文件,从而触发该错误。
  4. 状态变量装饰器使用隔离可以解决上述问题。

相关权限

不涉及。

依赖

不涉及。

约束与限制

本示例已适配API version 20及以上版本SDK。

下载

如需单独下载本工程,执行如下命令:

git init
git config core.sparsecheckout true
echo code/DocsSample/ArkUISample/StateManagementFAQApplication > .git/info/sparse-checkout
git remote add origin https://gitcode.com/openharmony/applications_app_samples.git
git pull origin master