首先看堆栈: 大概是说 startForegroundService 但是没有调用 Service.startForeground()。回到业务...
多线程通信往往是个很头疼的事情,Coroutine也不例外。多线程中有SynchronousQueue、Exchanger等,Coroutine...
Coroutine scope负责在不同的coroutine之间形成结构化和父-子关系(这里有点抽象,稍后会解释什么是结构化和父-子关系),通常...
和线程Thread相比,Kotlin的Coroutines非常的轻量。开启一个新的Coroutines可以使用launch,async或者run...
很久之前就想写这篇文章了,一方面是因为换工作啥的忙了一段时间,另一方面是想再用用更稳一点再和大家分享。 15款的Mac可以更换硬盘,再后面的版本...
之前项目中有竖向RecyclerView的子item中嵌套横向RecyclerView,当时横向直接用了RecyclerView,虽然感觉横向的...
Gradle插件本质就是一堆能够被复用的task的集合,就像抽取工具类一样。为了能写出一个可以发布的插件,先一步一步来。按照Gradle官方的文...
感觉很多时候创建好了项目,Gradle Build一下就好了。那么Build的时候发生了什么事呢?在此之前先看下Gradle项目的构成,了解下G...
写了几个Gradle插件后,好像对Gradle还是挺云里雾里的。虽然知道很多时候该怎么做,但是对于很多细节还挺懵的。由此打算写一些Gradle基...