HarmonyOS 鸿蒙Next:request.agent.Task在app被杀掉后,根据id和token获取的Task的token会发生变化
HarmonyOS 鸿蒙Next:request.agent.Task在app被杀掉后,根据id和token获取的Task的token会发生变化
通过request.agent.create
创建的Task已经设置过token,保存id和token,然后杀掉app重启。通过touch根据保存的id和token获取到的taskInfo,然后再根据id和token调用request.agent.getTask
获取到了真实task这个时候task 已经发生了变化,是符合预期的么
建议使用以下demo:
import { BusinessError, request } from '@kit.BasicServicesKit';
@Entry
@Component
struct RequestTask {
@State message: string = '';
private task: request.agent.Task | undefined = undefined
build() {
Column() {
Text('此demo为测试创建任务后,根据tid获取任务,没有直接使用存储tid的工具,所以您这边可以在创建任务后,在控制台把打印的tid记录下来,然后在输入框输入,用来查询任务')
Button('创建任务').onClick(()=>{
let config: request.agent.Config = {
action: request.agent.Action.DOWNLOAD,
url: '', // 需要手动将 url 替换为真实服务器的 HTTP 协议地址
title: 'createTest',
description: 'Sample code for create task',
mode: request.agent.Mode.BACKGROUND,
overwrite: true,
saveas: "../../resources/rawfile/test.zip",
gauge: false,
precise: false,
token: "123456789"
};
request.agent.create(getContext(), config, (err: BusinessError, task: request.agent.Task)=>{
if (err) {
console.error(`Failed to create a download task, Code: ${err.code}, message: ${err.message}`);
return;
}
this.task = task
console.info(`Succeeded in creating a download task. result: ${task.tid}`);
});
})
Button('开始任务').onClick(()=>{
console.log('开始任务')
this.task?.start()
})
TextInput({
placeholder:'请输入查询的taskId',
text:this.message
}).onChange((value: string) => {
this.message = value
})
Button('获取任务').onClick(()=>{
request.agent.getTask(getContext(), this.message,'123456789').then((task: request.agent.Task) => {
console.info(`Succeeded in querying a upload task. result: ${JSON.stringify(task.config)}`);
}).catch((err: BusinessError) => {
console.error(`Failed to query a upload task, Code: ${err.code}, message: ${err.message}`);
});
})
}
.height('100%')
.width('100%')
}
}
更多关于HarmonyOS 鸿蒙Next:request.agent.Task在app被杀掉后,根据id和token获取的Task的token会发生变化的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
在HarmonyOS鸿蒙系统中,当应用进程被杀掉后,request.agent.Task
相关的 token 确实可能会发生变化,这是因为系统为了安全和管理目的,通常会对进程重启或任务重建时重新分配相关标识符。
具体来说,token 在鸿蒙系统中通常用于验证任务或请求的有效性。当应用进程被终止后,系统可能会清理与该进程相关的所有状态信息,包括任务相关的 token。当应用重新启动并尝试通过 id 和旧的 token 获取任务时,系统会无法识别该 token,因为它可能已经被新的 token 替代。
这种情况是操作系统层面的正常行为,旨在保护系统免受潜在的安全威胁,并确保任务管理的正确性。因此,开发者需要在应用设计中考虑到这一点,确保在任务或请求管理时能够处理 token 失效的情况。
一种常见的做法是,在应用启动时重新获取或验证所有必要的任务 token,或者在任务执行前进行 token 的有效性检查。
如果问题依旧没法解决请联系官网客服,官网地址是 https://www.itying.com/category-93-b0.html,