原创 源碼探索系列7---四大金剛之Service

今天我們來看下這安卓的四大組件的另外一個Service,按套路應該先列點我們在探索過程需要注意的問題,不過現在一時沒想到有什麼,讓我們邊看說解釋,看下有什麼需要注意的 起航——開啓服務 API : 23 我們啓動服務一般有兩種調用

原创 源碼探索系列8---IntentService

我們知道,我們的Service如果要執行一些耗時的操作,需要開單獨的線程去幹活,而IntentService卻不用, 在他的onHandleIntent函數裏面我們可以執行耗時操作,啊,到底神奇在哪裏了呢? 讓我們去看看他的源

原创 源碼探索系列5---關於Broadcast、LocalBroadcastManager 、EventBus的比較和源碼解析

1. 比較 性能 對比 : EventBus不差 EventBus ~ LocalBroadCast > Bradocast 運行的線程環境: EventBus完勝! LocalBroadcastManager

原创 源碼探索系列10---替代Listview的RecycleView

自從有了Recycleview,很多原本是我們的Listview業務都被替代了,關於兩者的簡單比較,可以看這篇文章。我們今天就去看看他背後故事,下次再寫Listview,這名征戰多年的老將。 一些不要搞懂的問題 爲何谷歌推薦用這

原创 源碼探索系列12---關於事件分發機制

關於View的事件分發,實質就是關於MotionEvent時間的分發 再簡單點說就是通過一堆判斷,最後決定這個MotionEvent給誰用的問題。 三巨頭 分發過程中有主要涉及到三個人: dispatchTouchEven

原创 源碼探索系列13---Window的PhoneWindow與WindowManager

關於Window,PhoneWindow和WindowManager三者的關係是: Window是一個抽象類,他的具體實現是PhoneWindow 我們通過WindowManager來管理Window。 我們的所有的界面

原创 源碼探索系列3---四大金剛之Activity的啓動過程完全解析

在不同版本API,底層實現有些不一樣,所以這裏貼出現在在看的API版本號 API: 23 關於Activity的四個啓動flag,這裏下次再說。 先說下我們熟悉的一句吧 startActivity(new Intent(th

原创 源碼探索系列11---關於View的繪製

我們開發過程,基本需要自定義View,畫一些自己的小插件出來 這需要我們掌握整個View的繪畫過程和一些別的小技巧。 這裏總結下整個View的源碼中涉及到的一些繪製過程的核心部分, 之後再來看下整體的內容,畢竟整個源碼有近2

原创 源碼探索系列9---四大金剛之ContentProvider

好了,終於到了最後一個啦,寫到這裏,真的覺得不容意啊,以前看這些組件也就那樣了,現在還要記錄下來,重點是這東西都被分析爛了,我們這些後人屌絲還在寫,沒點突破的。真沒意思呢!就當寫作業咯。啦啦啦啦,不管如何,讓我們開始看下吧 起航

原创 源碼探索系列2---深入解析AsyncTask

在解析前,我們先來看下一般我們使用的情況是怎樣的 下面寫了一個簡單的demo,用來做個簡單的任務,從1數到100,同時調用publishProgress(i);來更新下進度。 我想用過的人自己直接閱讀下面代碼沒有任何問題。 c

原创 開源系列1---造個圖片選擇器

打算開個開源系列,用來分享在項目過程中些的一些小輪子。 在這年的末尾,擠下時間,看能改幾個還勉強過得去的出來分享給大家。 能力有些,實現得也不算很優雅。 還望各大神指點。 我要造輪子 作爲一名愛折騰人員,重複造輪子這種事還

原创 爲什麼要用AIDL

說到AIDL,每次就配套一個單詞就是IPC,到底是怎麼一回事,這事得從多進程說起。 有一天,我們寫了一個類,類裏面有一個靜態變量。就像下面這樣 public class UserBean { public stat

原创 Android測試教程12--模擬讀取的文件/數據庫

有時我們需要對文件或數據庫進行測試,但我們又不想破壞應用程序或設備原有的數據。 此時我們就需要一個Mock來替代他們,這裏的Mock不是android.test.mock, 但也是android.test包下面的,Renami

原创 Android測試教程13--模擬服務器MockServer之Moco詳細介紹

前面一篇介紹瞭如何用mockito來測試我們的一些異步任務,例如網絡請求時候的異步回調。 現在做進一步的介紹,一個模擬我們的服務器的東東–moco 先運行起來 請先下載這個文件moco.jar,接着,在我們的桌面新建一個文件da

原创 關於常量,枚舉和註解

我們在開發時候,難免需要定義一些常量,例如我們定義用戶的性別的時候,會有男和女,類似下面的 public class User { public static final int GENDER_MALE=0;