为了实现结构化并发,其中一个很重要的命题就是协程的取消。 在使用kotlin协程进行开发前,有两个概念我们始终是绕不开的, 一个是协程本身,一个是suspend函数。 协程通...

为了实现结构化并发,其中一个很重要的命题就是协程的取消。 在使用kotlin协程进行开发前,有两个概念我们始终是绕不开的, 一个是协程本身,一个是suspend函数。 协程通...
ExoPlayer AudioProcessor处理模型 ExoPlayer内部维护了一个AudioProcessChain,它的作用就是串联各个AudioProcessor...
项目中使用了自定义View作为Toast的展示内容,发现在后台时Toast自定义View不展示,而使用系统的Toast仍然会展示,查了半天,以为是我姿势不对,最后发现是系统变...
当我们给构造函数指定了默认值,并且存在重载的构造函数, 比如如下场景 如上代码场景,kotlin是如何决定在重载的时候调用哪一个构造函数呢? 首先kotlin是如何处理含有默...
runBlocking是kotlin提供的一个协程启动函数,它的作用是运行指定的中断函数,同时保证在runBlocking的协程体执行完成之前,runBlocking的下一行...
我们在自行编写Wav播放器的时候,有的时候发现经过ffmpeg处理后的wav文件头大小不再是44字节大小,使用 二进制分析工具可以看到其中有一个LIST Chunk部分,不知...
park/unpark和wait/notify都是Java提供给我们的机制,让我们能够对当前线程是否陷入阻塞进行控制。 park/unpark是LockSupport包中的功...
谷歌在安卓12以及以后的系统,对应用启动服务进行了更严格的限制,如果需要应用在后台停留的时候,仍然能够执行后台代码逻辑,这个时候需要通过前台服务的机制,前台服务和一般的服务A...
答案是会!以下为详细的解释。 SynchronousQueue是没有容量的队列,往队列里插入一个元素,下一次插入会陷入阻塞,直到之前的元素被其他消费者给取走。 在线程池的上下...