原创 View的Layout過程解析

1、問題 《View的Measure過程解析》中分析了View的大小測量過程,View的大小確定後,就是確定View在父容器中的位置,接下來我們就來分析View的佈局流程。 2、分析 與分析View的Measure過程一樣,從Vi

原创 View.measure(0, 0)方法什麼情況下能正確計算寬高

1.問題 在最新的需求中,想通過getMeasureWidth( )方法獲取一個FrameLayout佈局的measureWidth值,但由於未進行Measure步驟,所以getMeasureWidth( )最終會返回0。所以想手

原创 View的Measure過程解析

背景 在《Activity.setContentView()內部實現解析》分析了View是如何被添加到DecorView中,但添加到DecorView後,View對用戶來說還是不可見的。View在呈現給用戶前,它需要經過Measu

原创 深入解析View展示流程

1、背景 如果想在Activity中顯示一個佈局,做法是在Activity的onCreate()方法中使用setContentView()方法設定想要顯示的佈局,如下所示: @Override protected void onC

原创 Android 事件機制解析(上)

1、背景 Android的觸摸事件(MotionEvent)的傳遞機制還是有些複雜,內容會有點多,所以分爲上下兩篇來講解。 《Android MetionEvent事件解析(上)》分析事件的分發流程,當清楚了事件分發流程後,我們需要結

原创 Volley 深入解析(上)

1、概述 在開發的時候多數情況下我們都會使用HTTP協議和服務器進行通信。Android SDK 提供了兩種方式進行HTTP通信,即HttpClient和HttpURLConnection。不過直接使用HttpClient和HttpURL

原创 Android 事件機制解析(下)

1、寫在前面 在上一篇已經分析了事件的分發流程,分發流程還是比較複雜的,要想徹底弄清楚事件的分發機制,還得自己動手實踐。結合上一篇的源碼分析總結給出了一張Android事件的分發流程彙總圖: 結合上面給出事件分發圖,通過打印log分析

原创 Java 註解工作原理解析

1、背景 在Android開發中會經常使用到Java註解這個知識點,如:重寫父類方法時使用@Override註解、閱讀框架源碼時常看到@Deprecated註解。 特別現在有很多優秀的Android開源框架都是使用註解,如EventBu

原创 輸入法內存優化總結

一.背景 最近測試人員對我們的產品進程內存佔用測試,並和競品的內存佔用情況進行對比,得出的結論是我們的產品佔用的內存比競品多出不少, 所以需要對產品進行內存優化,我主要負責對商店進程的內存進行優化,以下是優化的過程和優化結果的總結。 二

原创 Java集合類總結

1、概述 集合是Android開發比較重要的知識點,數據集合是同來存儲數據的容器,通過容器給提供的接口可對容器中的數據進行增刪查改。爲了滿足開發者的不同需要,JDK提供多種類型的集合,這裏我們整理了一下Java 提供的集合類,便於以後的記

原创 跨進程使用ContentProvide出現死循環

一、問題背景 最近遇到了StackOverflowError的異常問題,具體信息如下: StackTrace=nulljava.lang.StackOverflowError at java.lang.IntegralToString.c

原创 鍵盤閃動問題分析及解決方案

1、背景 在之前的一些版本開發中,需要在鍵盤候選區的頂部添加一個View,但發現當鍵盤真在顯示時,如果我們動態的往候選區的頂部加一個View或者是去掉一個View,鍵盤都會出現閃動的現象,爲了找到鍵盤閃動的原因我們先對鍵盤的佈局比較清晰,

原创 Android 圖片內存解析

1、背景 要展示一張圖片,先得把圖片加載到內存,才能把圖片顯示出來。在Android開發中,顯示圖片有很多種方式,而區別就在於顯示圖片時佔用的內存和顯示的效果不同。 Android內存優化中圖片顯示是需要特別關注的點,所以這裏總結展示圖

原创 深入解析Android Handler

1、背景 在開發中我們經常會使用到Handler,對Handler的使用應該是比較熟悉的,但對Handler的工作原理可能還不是很清楚,今天來帶大家深入學習Handler的工作機制。一般使用Handler的場景如下: 子線程和UI線程進

原创 使用Sketch庫,出現找不到.so文件

1、問題 在最新的一次需求中,需要展示Gif圖,通過衡量了Glide和android-gif-drawable這個這兩庫的展示效率,決定使用android-gif-drawable。於是從github直接把最新的arr包下載下來,並直接加