harmony 鸿蒙Continuous Task Development (TaskPool)
Continuous Task Development (TaskPool)
This section provides a development guide for continuous tasks using TaskPool, with the example of periodically collecting sensor data.
Using TaskPool to Listen for Sensor Data
- Import the required modules.
// Index.ets
import { sensor } from '@kit.SensorServiceKit';
import { taskpool } from '@kit.ArkTS';
import { BusinessError, emitter } from '@kit.BasicServicesKit';
- Define a continuous task to listen for sensor data internally and register a destruction notification via emitter.
// Index.ets
@Concurrent
async function SensorListener() : Promise<void> {
sensor.on(sensor.SensorId.ACCELEROMETER, (data) => {
emitter.emit({ eventId: 0 }, { data: data });
}, { interval: 1000000000 });
emitter.on({ eventId: 1 }, () => {
sensor.off(sensor.SensorId.ACCELEROMETER)
emitter.off(1)
})
}
- Define the registration and destruction behavior in the host thread.
- Registration: Initiate the continuous task and receive listening data via emitter.
- Destruction: Send an event to cancel sensor listening and terminate the continuous task.
// Index.ets
@Entry
@Component
struct Index {
sensorTask?: taskpool.LongTask
build() {
Column() {
Text("Add listener")
.id('HelloWorld')
.fontSize(50)
.fontWeight(FontWeight.Bold)
.onClick(() => {
this.sensorTask = new taskpool.LongTask(SensorListener);
emitter.on({ eventId: 0 }, (data) => {
// Do something here
console.info(`Receive ACCELEROMETER data: {${data.data?.x}, ${data.data?.y}, ${data.data?.z}`);
});
taskpool.execute(this.sensorTask).then(() => {
console.info("Add listener of ACCELEROMETER success");
}).catch((e: BusinessError) => {
// Process error
})
})
Text("Delete listener")
.id('HelloWorld')
.fontSize(50)
.fontWeight(FontWeight.Bold)
.onClick(() => {
emitter.emit({ eventId: 1 });
emitter.off(0);
if(this.sensorTask != undefined) {
taskpool.terminateTask(this.sensorTask);
} else {
console.error("sensorTask is undefined.");
}
})
}
.height('100%')
.width('100%')
}
}
你可能感兴趣的鸿蒙文章
harmony 鸿蒙Configuring arkOptions in build-profile.json5
harmony 鸿蒙Ark Bytecode File Format
harmony 鸿蒙Naming Conventions for Ark Bytecode Functions
harmony 鸿蒙Ark Bytecode Fundamentals
harmony 鸿蒙Overview of Ark Bytecode
0
赞
- 所属分类: 后端技术
- 本文标签:
热门推荐
-
2、 - 优质文章
-
3、 gate.io
-
8、 golang
-
9、 openharmony
-
10、 Vue中input框自动聚焦