原创 Glide源碼解析四(解碼和轉碼)

本文基於Glide 4.11.0 Glide加載過程有一個解碼過程,比如將url加載爲inputStream後,要將inputStream解碼爲Bitmap。   從Glide源碼解析一我們大致知道了Glide加載的過程,所以我們可以直接從

原创 Volatile關鍵字原理 單例模式的雙重檢測

轉載請標明:https://www.cnblogs.com/tangZH/p/15113505.html 一、如果一個變量被volatile關鍵字修飾,那麼所有線程都是可見的。所謂可見就是,當一條線程修改了這個變量值,新值對於其他線程來時是

原创 Choreographer原理

Android 系統在 VSYNC 信號的指引下,有條不紊地進行者每一幀的渲染、合成操作,使我們可以享受穩定幀率的畫面。引入 VSYNC 之前的 Android 版本,渲染一幀相關的 Message ,中間是沒有間隔的,上一幀繪製完,下一幀

原创 Kotlin擴展函數與屬性原理解析

一、擴展函數 擴展函數可以方便地給現有類增加屬性和方法而不改動類地代碼。 二、原理 fun String.addTo(s: String): String{ return this + s } 反編譯: @Metadata(

原创 BlockCanary原理解析

一、背景 爲了解決應卡頓,分析耗時。 二、原理 Looper中的loop方法: public static void loop() { ... for (;;) { ... // This

原创 ExoPlayer播放流程解析

ExoPlayer的播放解析流程如下(以音頻爲例): 注意: 1、LoadControl.shouldContinueLoading控制是否繼續加載。 2、調用setPlayWhenReady(true)其實最終也是調用了AudioTra

原创 kotlin協程異常處理之-try catch

kotlin協程小記 協程的async使用 kotlin協程異常處理之-try catch kotlin協程異常處理之-CoroutineExceptionHandler 一、try catch try catch是否一定有效呢?未必

原创 kotlin協程異常處理之-CoroutineExceptionHandler

轉載請標明出處:https://www.cnblogs.com/tangZH/p/17307406.html kotlin協程小記 協程的async使用 kotlin協程異常處理之-try catch kotlin協程異常處理之-Cor

原创 Glide源碼解析三(註冊組件)

轉載請標明出處,維權必究: https://www.cnblogs.com/tangZH/p/12900387.html Glide源碼解析一,初始化 Glide源碼解析二—into方法 Glide源碼解析三(註冊組件) Glide源碼解

原创 自定義gradle插件並且發佈到本地倉庫

轉載請標明出處,維權必究:http://77blogs.com/?p=189 一、在工程上新建一個Module。 二、刪除其餘不必要的文件,最終目錄結構如下: 注意:由於我用的是kotlin語言,所以用的是java目錄,java語言也是

原创 好用網址分享-77ai導航與77搜索導航

AI(人工智能)技術正在改變我們的生活方式和工作方式,越來越多的人開始關注和使用AI相關的網站和應用程序。在這篇文章中,我將爲大家介紹一些常用的AI網址導航,幫助您更好地瞭解和使用AI技術。 AI Hub AI Hub是由Google Cl

原创 協程的async使用

async與launch一樣都是開啓一個協程,但是async會返回一個Deferred對象,該Deferred也是一個job   async函數類似於 launch函數.它啓動了一個單獨的協程,這是一個輕量級的線程並與其它所有的協程一起併發

原创 kotlin協程小記

例子一: GlobalScope.launch(Dispatchers.Main) { //開啓子協程 withContext(Dispatchers.IO) { for (i in 0 until 100

原创 Glide源碼解析二---into方法

轉載請標明出處,維權必究: https://www.cnblogs.com/tangZH/p/12543154.html Glide作爲一個強大的圖片加載框架,已經被android官方使用,所以,明白Glide的加載流程以及原理對加深我們對

原创 RxJava + Retrofit源碼解析

RxJava + Retrofit怎麼請求網絡,具體的用法這裏就不講了,本文只講一些重點源碼。 版本如下: okhttp : "com.squareup.okhttp3:okhttp:3.1