原创 RecyclerView中View的添加複用

本文以通俗的語言,記錄在閱讀RecyclerView源碼時的一些心得🤔。 添加view的過程 在使用recyclerView的setAdapter方法設置adapter時,會調用RecyclerView的requestLayou

原创 RecyclerView實現懸浮吸頂、分隔線、到底提示效果

本文中所有效果通過ItemDecoration實現,通過此實現的可以與業務解耦,讓RecyclerView的模板更加簡潔,不關心任何輔助性ui,github地址 一、頂部吸附效果圖 二、頂部不吸附效果圖 三、不滿一屏效果 四

原创 分析ConcurrentHashMap的源碼實現(jdk1.8)

ConcurrentHashMap不僅實現了多線程的同步讀寫而且輕量級,這是它相比於HashMap和HashTable的優勢。HashMap是線程不安全的,它沒有提供任何的同步機制,多線程併發訪問會有問題。HashTable雖然提供了

原创 源碼分析AQS獨佔鎖、共享鎖和Condition的實現

AbstractQueuedSynchronizer是java.util.concurrent包下非常重要和基礎的類,concurrent包下提供了一系列的同步操作需要的工具,包括了ReentrantLock、ReentrantRea

原创 分析ThreadLocal的實現原理

ThreadLocal是開發中常會使用的一個工具,從類的名字就可以看出,它爲線程提供本地變量,即:每個線程私有的數據。下面直接進入源碼。 1、使用方法: // Entity 存放線程要保存的信息 ThreadLocal<Entity>

原创 Gradle之多項目構建

Gradle對構建模塊化項目提供了強大的支持,在Gradle中每一個模塊都是一個項目,稱之爲Gradle多項目構建技術,多項目構建實現了項目模塊化,降低代碼耦合度,增加內聚性,本篇文章將簡單介紹如何使用Gradle進行多項目構建。 1

原创 Gradle之task的使用

在上一篇文章中(https://blog.csdn.net/weixin_38062353/article/details/82230239)做了對gradle的基本介紹,本篇文章將探索最基礎的gradle構建塊:project和ta

原创 Gradle之重新認識Gradle(項目結構、命令行、task、構建Java項目、包裝器)

前言:之前一直接觸使用Gradle完成Android項目的自動化構建,所謂重新認識Gradle是因爲最近看了《Gradle IN Action》一書,對gradle進行了一次全面的重新的認識。所以決定以系列博客,來完成自己對Gradl

原创 Gradle之持續集成 - 使用Jenkins構建Gradle項目

參考《Gradle IN Action》:持續集成(Continuous Integration,CI)是一個軟件開發實踐,其提倡頻繁地集成代碼,對於每個變化,源代碼都會通過自動化構建被編譯和測試,從而有效地減少集成難度,讓項目中的問

原创 Gradle之Gradle擴展-自定義插件以及發佈

通常我們會想要將一個非常有用的task共享給多個項目使用,Gradle插件正可以解決這一問題。Gradle插件是非常強大的,如Java插件,一行代碼:apply plugin: 'java',就可以使用Java插件實現代碼的編譯、測試

原创 ThreadPoolExecutor的使用及源碼分析

ThreadPoolExecutor自己也經常使用,也看過幾次源碼,但是源碼具體執行流程在經過一段時間之後有些就變得模糊。所以還是在此記錄一下ThreadPoolExecutor源碼中的關鍵點和自己對代碼的理解。 在文章前面部分介紹

原创 android可以無限循環滑動的ViewPager

前言:最近有需求需要某個頁面是可以無限滑動的,這個頁面是用ViewPager實現的,但是ViewPager本身並不能無限滑動,所以想在android現有ViewPager的基礎之上,實現這個功能,本文提供基於PagerAdapter和

原创 播放器手勢:基於GestureDetector實現(雙擊、快進快退、音量亮度調節)

最近有個播放器手勢滑動快進快退的需求,研究了一下Android中GestureDetector的用法,封裝了一個工具類,實現了單擊、雙擊、橫向滑動(快進快退)、豎向滑動(亮度音量調節)手勢。代碼參見:https://github.com/

原创 Android 屬性動畫代碼分析(基於ObjectAnimator)

android屬性動畫是開發中經常使用的一項技能,但是我之前卻從沒有深究過動畫實現原理,本文基於android 8.0,擼了一把ObjectAnimator源碼,分析屬性動畫執行關鍵的過程。 一、動畫執行的兩個主要的問題 動畫每一幀執行

原创 android 使用ndk(socket)進程保活

最近看了動腦學院的一個ndk進程守護的課程,特在此記錄一下。由於個人之前對linux系統還是有所學習的,所以代碼看起來基本沒什麼問題,在這裏主要記錄一下相關主要知識點、進程保活的主要實現原理。 代碼我進行了整理,可參考git地址:htt