240 发简信
IP属地:浙江
  • Resize,w 360,h 240
    Android-Flutter混合开发包体积优化

    最近在忙Android包体积优化的工作,将包体积从大于87MB降到了不到65MB,降幅超过25%,做到了全行业竞品包体积最小。总结下用到的工具和...

  • Resize,w 360,h 240
    Kotlin 泛型之 in,out,where

    在更深入的了解之前,让我们先从一些例子看起:让我们先写一个简单的泛型类: 代码很简单,代码逻辑没有问题,编译也能通过。但是如果把boxDog赋值...

  • 一次奇妙的Context.startForegroundService() did not then call Service.startForeground() Crash

    首先看堆栈: 大概是说 startForegroundService 但是没有调用 Service.startForeground()。回到业务...

  • Resize,w 360,h 240
    Coroutines中的Channel

    多线程通信往往是个很头疼的事情,Coroutine也不例外。多线程中有SynchronousQueue、Exchanger等,Coroutine...

  • Coroutines中的Structured concurrency 结构化并发

    Coroutine scope负责在不同的coroutine之间形成结构化和父-子关系(这里有点抽象,稍后会解释什么是结构化和父-子关系),通常...

  • Resize,w 360,h 240
    Coroutines中的launch、async和runBlocking

    和线程Thread相比,Kotlin的Coroutines非常的轻量。开启一个新的Coroutines可以使用launch,async或者run...

  • 15款 MacBook Pro 15寸更换固态

    很久之前就想写这篇文章了,一方面是因为换工作啥的忙了一段时间,另一方面是想再用用更稳一点再和大家分享。 15款的Mac可以更换硬盘,再后面的版本...

  • RecyclerView嵌套滑动异常处理

    之前项目中有竖向RecyclerView的子item中嵌套横向RecyclerView,当时横向直接用了RecyclerView,虽然感觉横向的...

  • Resize,w 360,h 240
    Gradle插件编写

    Gradle插件本质就是一堆能够被复用的task的集合,就像抽取工具类一样。为了能写出一个可以发布的插件,先一步一步来。按照Gradle官方的文...