原创 Android中的Binder機制一(實名Binder)

前言 Binder機制和Handler機制是Android中的兩大核心機制,是理解Android系統的基礎和關鍵。本文以AMS爲例,簡單分析下實名Binder的工作過程。 一、Binder相關的基礎概念 在Android中的Bin

原创 dex替換方式實現熱修復

一、dex數組替換的原理 Android中比較常用的熱修復框架是Sophix和Tinker,Sophix框架是通過修改方法指針來實現的,而Tinker框架是通過修改dex數組元素來實現的,這裏就研究下dex替換方式的原理並通過代碼

原创 ASM和自定義Transform的應用實踐

上篇文章學習了下如何自定義gradle插件《自定義gradle》,在實際應用中一般都會結合自定義的Transform和字節碼操作框架(像ASM、Javassist)通過操作字節碼來實現自己的業務邏輯,Transform是Andro

原创 Android Studio3.6版本,格式化xml佈局,導致錯亂

將Android Studio升級到最新版3.6.3,編寫完xml文件後,來了一下代碼格式化,然後驚奇的發現佈局全都亂套了,檢查發現自己寫的view控件位置發生了變化,不知道AS爲什麼會出現這麼弱智的設計,下面說下解決問題的方法(

原创 自定義註解在MVP中的使用

在Mvp架構中Activity需要創建Presenter對象,並處理與Presenter的綁定、解除綁定關係,這是View層公共的邏輯,可以把這些邏輯抽取到Base中統一處理,然而一個Activity中可能需要創建多個Presen

原创 動態代理在MVP中的使用

MVP在Android項目開發中是一種很常用的架構,本文不對MVP的基礎概念和基本使用進行敘述,本文要探討的問題是動態代理在MVP中的應用。 在MVP架構中,P層會持有View,在P層處理完數據後會調用View的方法更新UI。如果

原创 OkHttp源碼分析

一、OkHttp的基本使用 //構建OkHttpClient對象 OkHttpClient okHttpClient = new OkHttpClient.Builder() .addInterceptor(new

原创 ContentProvider啓動過程

ContentProvider是Android中的四大組件之一,它主要是用作進程間共享數據,雖然這個組件在平時用的很少,但是它的設計思想還是很值得學習的,下面就以調用query方法查詢數據的過程爲例來分析下ContentProvi

原创 ExpandableTextView可以展開和收縮的TextView

基本使用:studio中直接引用 compile 'com.ms-square:expandableTextView:0.1.4',然後可以在代碼中使用,用法和TextView一樣。 佈局文件: <?xml version="1.0"

原创 Android錄製視頻,可限制時長,限大小

Android錄製視頻: public static void recordVideo(Context context, int limit_time, int size) { Intent intent = new Inten

原创 textView自動縮放字體大小

textView顯示的寬度是一定的,如果字數過長就要縮小字體,以滿足顯示寬度,如果字數少,就要正常顯示字體大小,可自定義textView實現,代碼如下: public class AutoScaleTextView extends Te

原创 TextView將鏈接替換爲文字,點擊文字還是點擊鏈接效果,可以自己處理鏈接點擊事件

TextView將鏈接替換爲文字,點擊文字的時候還是點擊鏈接效果代碼實現: CharSequence text = textView.getText(); String textStr = text.toString(); if (te

原创 Android中的Binder機制二(匿名Binder)

一、前言 之前學習了實名Binder《實名Binder》和AIDL的基本使用《AIDL的使用》,本篇文章在上兩篇的基礎上繼續學習匿名Binder,並結合aidl中的例子理解Binder在應用層面上具體是如何通信的,文中分析所用到的

原创 Service的綁定過程

Service的綁定過程 服務的綁定也算是開發中比較常用的功能,在上下文環境中通過bindService就可以綁定一個服務,通過追蹤bindService的源碼可以知道,最後會調用到父類ContextWrapper中,在這個類中又

原创 Context的創建過程

一、Context Context是Android中的上下文環境,頁面跳轉、開啓服務、發送廣播、彈框、訪問資源、獲取系統服務等等,很多的操作都需要Context。其中Activity、Service、Application都是Co