先自我介绍一下,小编浙江大学毕业,去过华为、字节跳动等大厂,目前阿里P7
深知大多数程序员,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年最新HarmonyOS鸿蒙全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上鸿蒙开发知识点,真正体系化!
由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新
如果你需要这些资料,可以添加V获取:vip204888 (备注鸿蒙)
正文
}
我在MainAbility中通过调用getGlobalTaskDispatcher()方法,传入一个等级TaskPriority.DEFAULT,这个也可以用null来代替。然后得到一个TaskDispatcher的对象
② ParallelTaskDispatcher
并发任务分发器,(音译:佩尔楼 他死 diss 怕球儿~)由 Ability 执行 createParallelTaskDispatcher()创建并返回。与GlobalTaskDispatcher 不同的是,ParallelTaskDispatcher 不具有全局唯一性,可以创建多个。开发者在创建或销毁 dispatcher 时,需要持有对应的对象引用 。
/**
-
创建并发任务分发器
-
@param name 名称
-
@param priority 优先级
-
@return parallelTaskDispatcher
*/
public TaskDispatcher createParallelTaskDispatcher(String name, TaskPriority priority) {
throw new RuntimeException(“Stub!”);
}
创建时传两个参数,一个字符串的名字,一个是等级优先级,这里我用null也可以的。这里你又可以想一下为什么需要多一个名字参数,当然是为了区别不同的并发任务分布器,不过至于可不可以重名我就不知道了,理论上来说,应该不允许重名,说不定会给你报错,可以自己去尝试。
③ SerialTaskDispatcher
串行任务分发器(音译:C瑞尔 他死 diss 怕球儿~)由 Ability 执行 createSerialTaskDispatcher()创建并返回。由该分发器分发的所有的任务都是按顺序执行,但是执行这些任务的线程并不是固定的。如果要执行并行任务,应使用 ParallelTaskDispatcher 或者 GlobalTaskDispatcher,而不是创建多个SerialTaskDispatcher。如果任务之间没有依赖,应使用 GlobalTaskDispatcher 来实现。它的创建和销毁由开发者自己管理,开发者在使用期间需要持有该对象引用。你可以把它理解成一个有序列表,但是列表里面的值是可变的。它的方法如下:
/**
-
创建串行任务分发器
-
@param name 名字
-
@param priority 优先级
-
@return SerialTaskDispatcher
*/
public TaskDispatcher createSerialTaskDispatcher(String name, TaskPriority priority) {
throw new RuntimeException(“Stub!”);
}
获取方法
④ SpecTaskDispatcher
专有任务分发器(音译:思拜客 他死 diss 怕球儿~) 专有任务分发器,绑定到专有线程上的任务分发器。目前已有的专有线程是主线程。
UITaskDispatcher 和 MainTaskDispatcher 都属于 SpecTaskDispatcher。建议使用UITaskDispatcher。
UITaskDispatcher:绑定到应用主线程的专有任务分发器, 由 Ability 执行getUITaskDispatcher()创建并返回。 由该分发器分发的所有的任务都是在主线程上按顺序执行,它在应用程序结束时被销毁。之前我们说主线程上不能执行过多的任务,那么这个分发器就可以绑定到主线程上,进而可以执行很多任务,你可以这么理解。方法如下:
/**
-
获取主线程任务分发器
-
@return MainTaskDispatcher
*/
public final TaskDispatcher getMainTaskDispatcher() {
throw new RuntimeException(“Stub!”);
}
/**
-
获取UI线程任务分发器
-
@return UITaskDispatcher
*/
public final TaskDispatcher getUITaskDispatcher() {
throw new RuntimeException(“Stub!”);
}
⑤ 同步派发任务(syncDispatch)
就是一个同步进行的线程,下面由globalTaskDispatcher来派发同步任务。
修改MainAbility。
//日志
private static final HiLogLabel label = new HiLogLabel(3, 0xD001100, “ThreadDemo”);
private TaskDispatcher globalTaskDispatcher;
@Override
public void onStart(Intent intent) {
super.onStart(intent);
super.setMainRoute(MainAbilitySlice.class.getName());
//获取全局并发任务分发器 一个应用程序只有一个
globalTaskDispatcher = getGlobalTaskDispatcher(TaskPriority.DEFAULT);
//GlobalTaskDispatcher 派发同步任务
syncTask();
}
syncTask方法中中派发三个同步任务,打印日志
/**
- GlobalTaskDispatcher 派发同步任务
*/
private void syncTask() {
globalT