原创 TintContextWrapper強轉Activity失敗原因深度探索

公司Android app遇到這個bug,遂開始一番探尋。 問題 先來看下錯誤日誌: 2018-02-25 17:38:38 java.lang.ClassCastException: android.support.v7.widget.

原创 EventBus源碼分析

前言 EventBus是一個處理事件的第三方框架,以發佈和訂閱的方式讓使用者能夠避免一些複雜的邏輯,輕鬆地在組件之間傳遞消息。 EventBus is a publish/subscribe event bus for Android

原创 限制字數, 並且實時顯示字數的EditText

最近換了新工作,有幸進入了一家C輪互聯網公司,算是達到了職業規劃的近期目標吧。 比起之前的小公司確實各方面都正規完善了很多,就Android來說,工程中對很多組件都進行了自己的封裝。 前一階段剛入公司,比較忙,現在已經緩和下來了,所以準備

原创 RxJava2源碼分析

本文基於RxJava2.2.1版本分析。 簡介 官方介紹: RxJava is a Java VM implementation of Reactive Extensions: a library for composing async

原创 發佈一個Gradle插件--實現一鍵創建Activity

定義Gradle插件的方式 有三種方式可以定義Gradle插件: 直接在build腳本中定義。 在已有的項目中新建一個module,目錄必須是rootProjectDir/buildSrc/src/main/groovy。 在一個單獨的

原创 Android中的compileSdkVersion,minSdkVersion,targetSdkVersion和buildToolsVersion

引言 使用Android Studio編寫構建一個Android項目時,需要我們配置build.gradle文件,如下: …… android { compileSdkVersion 23 buildToolsVersio

原创 LiveData源碼分析

前言 公司的項目使用的是MVVM設計模式,自然離不開LiveData,今天就來學習一波LiveData相關的源碼。 如何感知生命週期 LiveData是在LifeCycle包下的,使用LiveData首先來了解一下LifeCycle是如何

原创 Glide源碼分析

使用 官方給出的簡單使用的例子: // For a simple view: @Override public void onCreate(Bundle savedInstanceState) { ... ImageView im

原创 findViewById原理分析

最近有朋友出去面試,被問到findViewById的原理。 當然,我也不知道,現在就來學習一下。 查看源碼,發現不管是activity.findViewById(id),還是view.findViewById(id)最後調用的都是Vie