240 发简信
IP属地:山东
  • 你真的会用Gson吗?Gson使用指南(一)

    本文为作者根据日常使用结合Gson源码注释及wiki所作的原创内容,转载请注明出处。本文链接://www.greatytc.com/p/e740196225a4 JS...

  • 120
    Kotlin 泛型之 in,out,where

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

  • 120
    WebView打开慢、卡问题跟踪

    测试手机型号:Oppo K9 5G CPU:高通768G 内存:8G 首先看一个Perfetto图,看看为什么打开Web页面这样的卡和慢: Release版本的APK,首...

  • 120
    Flutter版本管理工具FVM

    由于项目Flutter版本升级以及需要保持多个Flutter版本开发不同版本的App,本地Flutter版本升级后会面临一系列问题: App编译无法通过 一些包工作不正常 多...

  • 确实是这样,也有想过做窗口的逻辑层级管理。
    可以考虑先remove然后add。

    Android悬浮窗操作使用总结

    前阵子公司项目中需要大量使用Android悬浮窗去实现一些功能,对公司之前一团糟的代码结构和面对国产Android奇(沙)葩(雕)的机型适配(对,我说的奇(沙)葩(雕)机型就...

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

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

  • 一个工具类,拉下源码就能看到了

    Android悬浮窗操作使用总结

    前阵子公司项目中需要大量使用Android悬浮窗去实现一些功能,对公司之前一团糟的代码结构和面对国产Android奇(沙)葩(雕)的机型适配(对,我说的奇(沙)葩(雕)机型就...

  • 120
    Coroutines中的Channel

    多线程通信往往是个很头疼的事情,Coroutine也不例外。多线程中有SynchronousQueue、Exchanger等,Coroutine提供了Channel这个工具用...

  • Coroutines中的Structured concurrency 结构化并发

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

  • 120
    Coroutines中的launch、async和runBlocking

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

  • 15款 MacBook Pro 15寸更换固态

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

  • 看起来和MIUI的版本有点关系,看下这个手机的MIUI版本,从这个角度找找问题呢。很长时间没接触这块了。

    Android悬浮窗操作使用总结

    前阵子公司项目中需要大量使用Android悬浮窗去实现一些功能,对公司之前一团糟的代码结构和面对国产Android奇(沙)葩(雕)的机型适配(对,我说的奇(沙)葩(雕)机型就...

  • RecyclerView嵌套滑动异常处理

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

  • 120
    Gradle插件编写

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

  • 120
    Gradle的基本流程

    感觉很多时候创建好了项目,Gradle Build一下就好了。那么Build的时候发生了什么事呢?在此之前先看下Gradle项目的构成,了解下Gradle Wrapper。这...

  • 120
    Gradle基础

    写了几个Gradle插件后,好像对Gradle还是挺云里雾里的。虽然知道很多时候该怎么做,但是对于很多细节还挺懵的。由此打算写一些Gradle基础的东西,帮助巩固和加深下Gr...

  • 120
    Exchanger

    Exchanger用于两个线程间交换数据。说起来这个和前面讲过的SynchronousQueue[//www.greatytc.com/p/73b4fc3b45d3...