原创 你真的懂Java泛型嗎

泛型實現參數化類型的概念,使代碼可以應用於多種類型,解除類或方法與所使用的類型之間的約束。在JDK 1.5開始引入了泛型,但Java實現泛型的方式與C++或C#差異很大。在平常寫代碼用到泛型時,彷彿一切都來得如此理所當然。但其實Java泛

原创 select/poll/epoll到底是什麼一回事

面試題:說說select/poll/epoll的區別。 這是面試後臺開發時的高頻面試題,屬於網絡編程和IO那一塊的知識。Android裏面的Handler消息處理機制的底層實現就用到了epoll。 爲此,我在Google上看了很多相關

原创 淺談Java反射的實現原理

從一段示例代碼開始 Class clz = Class.forName("ClassA"); Object instance = clz.newInstance(); Method meth

原创 用最優雅的方式startActivity

寫在前面 相信很多人看到標題startActivity可能會輕蔑一笑,啓動Activity不是Android開發裏基礎得不能再基礎的內容嗎? 但相信點進來的各位看官都是追求優雅編碼的開發者:) 。我要用一個優雅的姿勢,最小的代碼來啓動一個

原创 正則表達式必知必會

正則表達式必知必會 本文共有2571字,閱讀耗費11分鐘。本文首發於個人博客:http://tanlehua.top/posts/tech/others/learn-regex/ 什麼是正則表達式 一(fei)言(hua)蔽(shao)之

原创 偷懶新姿勢,打造屬於RecyclerView的萬能適配器Adapter和ViewHolder

前言 昨天開始接觸江湖口碑很好的RecyclerView,事實上,我已經被她的強大所征服了!資源回收,數據綁定,佈局顯示,分割線,Item動畫多個模塊高度解耦,靈活優雅。其實,RecyclerView在使用上已經是相當簡單了(個人覺得),

原创 圖解Activity的啓動過程

由於Activity的啓動涉及大量IPC和Binder方面的知識,因此瞭解這方面的知識後再來看Activity啓動的相關源碼可能不會那麼吃力。 Activity啓動的相關類和概要 Activity啓動時涉及到的類有IActivityMan

原创 圖解+源代碼 全面理解Android View事件分發

View事件分發是Android裏面非常重要的知識點,我查閱了很多資料,新建demo分析Log日誌加以驗證,總結成這篇博文。 宏觀的角度 View 事件分發涉及到三種角色,三個方法,三種重點事件,分別是Activity,ViewGroup

原创 ThreadPoolExecutor源碼初探

重要的類或成員 ctl private final AtomicInteger ctl = new AtomicInteger(ctlOf(RUNNING, 0)); ThreadPoolExecutor用這一個原子整型變量保存了兩個內容

原创 淺析AIDL的使用和工作原理

AIDL是一種接口定義語言,用於生成可在Android設備上兩個進程之間進行進程間通信(IPC)的代碼。 AIDL的使用 新建一個aidl文件,定義進程間通信的接口 // IStudentManager.aidl package co

原创 從字節碼角度理解JVM異常處理機制的原理

前幾天看到一條阿里巴巴的面試題:你瞭解try-catch塊的實現原理嗎? 我服,阿里的面試題就是有深度啊。要答好這一題,我覺得需要反編譯一下.java源文件,因爲字節碼面前了無祕密。 反編譯一段小程序 爲了簡單起見,我搞了一段沒什麼實際

原创 消滅模板代碼,自定義AndroidStudio文件模板(1)

Previously 我們日常開發肯定會或多或少遇到寫模板代碼的時候,比如寫Adapter、寫單例類、寫用Parcelable實現序列化的相關代碼、寫實現Mvp架構的相關接口等等。但作爲一個追求優雅編碼的人,我一直崇尚“Write the

原创 對如何入門Android的一些建議

前言 最近帶學弟學Android,我想把我學Android的一些建議和感想整理出來,分享給更多有需要的人。 工欲善其事,必先利其器 科學上網 俗話說,不會fanqiang的程序員不是好的程序員。事實上,很多好的學習資源都需要到牆外去獲

原创 Huffman編碼解壓縮的通俗講解

前言 好久沒寫博客了,主要是各種事纏着,難以抽出時間。這兩個月以來,由於項目需要,我也逼着自己學到了很多,什麼java後臺,web前端,還有萬惡的OpenCV圖形處理……,呵呵,全棧:( 。但對Android的學習我始終不肯放下。但是今天

原创 判斷Listview滑到頂部的最精準方案,解決Listview設置EmptyView與SwipeRefreshLayout衝突

故事發生的背景 SwipeRefreshLayout是谷歌自家控件,提供下拉刷新的功能。然而這個控件簡單易用的同時也有一個令人頭疼的缺點,那就是它裏面只能包含一個子View!有一天,需求來了,需要在爲Listview添加EmptyView