原创 [AOP]AspectJX基本使用

AspectJX基於AspectJ並在此基礎上擴展出來可應用於Android開發平臺的AOP框架,可作用於java源碼,class文件及jar包,同時支持kotlin的應用。 引入 插件引用 在項目根目錄的build.grad

原创 【AOP】一個輕量級Android AOP框架Lancet介紹

注:本文來自github的lancet框架的官方文檔,僅做學習轉載 來源:餓了麼github 原文地址:https://github.com/eleme/lancet/edit/master/README_zh.md Lancet

原创 【併發】android中的synchronized

synchronized用於多線程訪問,並且被修飾的部分不能同時被執行,是代碼同步的一種方式。 1 使用synchronized修飾方法 1.1 synchronized修飾方法原理 過程:當多個線程同時訪問被synchroni

原创 線程池的好處? 五種線程池的使用場景,線程池的幾個參數的理解?

1 線程池的好處 線程的創建和銷燬由線程池維護,一個線程在完成任務後並不會立即銷燬,而是由後續的任務複用這個線程,從而減少線程的創建和銷燬,節約系統的開銷。 線程池旨在線程的複用,這就可以節約我們用以往方式創建線程和銷燬線程所消

原创 【面試】可以在子線程直接new一個Handler嗎?怎麼做?

可以在子線程直接new一個Handler,不過需要在子線程裏先調用Looper.prepare(),new一個Handler後,還需要調用Looper.loop()方法。 new Thread(new Runnable

原创 【註解】annotationProcessor自動生成代碼

使用annotationProcessor根據註解自動生成代碼。本文先不講原理,只講實現過程。嘗試了一下在模塊化中使用註解自動生成代碼,但是會報錯:Attribute value must be constant。這是因爲在lib

原创 【併發】Lock與ReentrantLock

1 Lock基本使用 Lock能實現代碼同步,它比synchronized更具靈活性,什麼時候鎖住,什麼時候釋放鎖等都是看得見的,使用時必須使用try{}finally{},意思是萬一發生異常或者錯誤都可以釋放鎖。 try{ }f

原创 【面試】Handler/Runnable造成的內存泄漏

1 內存泄漏根本原因 內存泄漏的根本原因是:長生命週期的對象持有短生命週期的對象,短生命週期的對象就無法及時釋放。 2 Handler錯誤用法 private Handler handler = new Handler

原创 【面試】使用Handler的postDealy後消息隊列會有什麼變化?

MessageQueue裏的消息會以時間順序(執行的先後順序)來排序,使用Handler的postDealy後,MessageQueue裏的消息會進行重新排序。 根據源碼一步步分析: public final boolean po

原创 【註解】使用註解來代替findViewById

本文是使用註解代替findViewById的簡單使用,在此之前,必須要瞭解什麼是元註解,元註解有哪些,作用是什麼? 註解的概念是java5.0提出來的,元註解主要有四種: @Target:說明了註解修飾的範圍 @Retentio

原创 【性能】垃圾收集器(GC)

目錄1 概述2 判斷對象是否存活2.1 引用計數法2.2 可達性分析3 垃圾收集算法3.1 標記-清除算法3.2 複製算法3.3 標記-整理算法3.4 分代收集算法 1 概述 在Java內存運行時的各個部分中,程序計數器,虛擬機棧

原创 【泛型】泛型上下邊界

上一篇 【泛型】通配符與嵌套 通配符可以是任意類類型,在實際業務中使用通配符時,可能會遇到很多安全問題,如傳入的泛型類沒有特定的方法或屬性,類型轉換錯誤等。爲了防止這些問題的發生,就有了上下邊界,用於指定通配符的範圍。 1 泛型上

原创 【註解】自定義註解及元註解

1 元註解 元註解的作用就是負責註解其他註解。Java5.0定義了4個標準的meta-annotation類型,它們被用來提供對其它annotation類型作說明。Java5.0定義的元註解有: @Target @Retenti

原创 【圖片九宮格】android多圖顯示,多出圖片以文字提示

效果如下圖所示 只有一行顯示圖片,多出來的圖在最後一張圖上顯示圖片總數量。 1 需要用到的知識 MeasureSpec.getSize(widthMeasureSpec) 指的是總寬度,包含padding的值 setMeasu

原创 【面試】強引用、軟引用、弱引用和虛引用

強引用:是指創建一個對象並把這個對象賦給一個引用變量。 軟引用:如果一個對象具有軟引用,內存空間足夠,垃圾回收器就不會回收它;如果內存空間不足了,就會回收這些對象的內存。只要垃圾回收器沒有回收它,該對象就可以被程序使用。 弱引