介绍
本示例介绍几种Sendable的使用案例:生产者消费者模式多线程协同工作(日志、打点信息处理)、Sendable共享对象实现跨线程通信&UI状态刷新。
效果图预览
使用说明
- 点击“Sendable的线程间共享”按钮,进入“文件下载列表”页面;
- 点击“启动”按钮,“启动”按钮变成“暂停”按钮,页面进度条每次增加20%;
- 当进度条到达“100%”,“启动”按钮变成“完成”按钮;
- 点击“暂停”按钮,“暂停”按钮变成“继续”按钮,页面进度条停止增加;
- “继续”按钮变成“暂停”按钮,页面进度条每次增加20%;
- 返回上一页面,点击“生产者消费者模式”按钮,进入“生产者消费者模式”页面;
- 点击“一个消费者线程消费”按钮,点击“主线程生产一条日志”按钮,打印出一条带有“consumerOne”日志;
- 点击“二个消费者线程消费”按钮,多次点击“主线程生产一条日志”按钮,打印多条带有“consumerOne”和“consumerTwo”日志;
- 点击“十个子线程生产十条日志”按钮,打印出10条日志;
- 点击“长时生产日志”按钮,会一直打印日志;
- 点击“停止长时生产日志”按钮,日志停止打印;
- 点击“停止消费者线程”按钮。
- 退出应用。
工程目录
├──entry/src/main/ets // 代码区
│ ├──constants
│ │ └──Constants.ets // 公共常量
│ ├──downLoadFilePage
│ │ ├──model // 实体类
│ │ ├──DownLoadComponent.ets // 下载子组件
│ │ ├──DownLoadFilePage.ets // 文件下载页面
│ │ └──DownLoadVideo.ets // 进度条
│ ├──entryability
│ │ └──EntryAbility.ets // 程序入口
│ ├──pages
│ │ └──Index.ets // 首页
│ ├──producerConsumer
│ │ ├──model // 实体类
│ │ ├──tasks // Task
│ │ └──ProducerConsumerPage.ets // 生产者消费者模式(日志打印)页面
│ └──utils
│ └──Logger.ets // 日志类
└──entry/src/main/resources // 应用资源目录
相关权限
不涉及。