原创 Android之UI Automator框架源碼分析(第六篇:UiDevice查找控件之一)

(注意:本文基於UI Automator測試框架版本爲2.2.0) UI Automator測試框架中,UiDevice對象表示當前設備(手機、平板、電視、手錶等等),在UI功能自動化測試中,查找控件是測試三元素中的第一個Action,它

原创 Android之UI Automator框架源碼分析(第x篇:UiWatcher的註冊與反註冊)

(注意:本文基於UI Automator測試框架版本爲2.2.0)       關於操作UiWatcher的方法共計6個,全部定義在UiDevice類中,註冊與反註冊UiWatcher是一切的前提,不然後續的關於UiWatcher的方法就

原创 Android之UI Automator框架源碼分析(第X篇:StaleObjectException異常如何解決?)

    StaleObjectException,在使用UI Automator測試框架時,在個別機型(API版本上)特別常見的一個異常,當View樹中匹配的控件View對象被回收時(已不存在),如果你繼續使用表示該控件的UiObject

原创 如何從零製作一個測試平臺(第一篇:技術選型)

感謝很多朋友的支持,第一次打造系列文章,還是很興奮的,本系列文章將完整闡述:從零建設一個測試平臺 背景:測試平臺的好處非常多,通過前端頁面就可以隨時查看測試任務歷史,還可以利用後端隨時調用其它服務(Jmeter、Appium等等),在技術

原创 Android之IntentService源碼分析(第二篇:使用)

a、extends IntentService,重寫onHandleIntent方法,在裏面加入你自己的業務邏輯 b、startService(傳入Intent對象)   0、一個參數,接受一個Intent對象 protect

原创 Java之LinkedList源碼分析(第三篇:添加元素-List接口)

LinkedList的添加元素的方法太多……,本篇從實現List接口的方法開始描述   0、一個參數,接受一個參數類型E的參數 public boolean add(E e) { linkLast(e);

原创 Android之IntentService源碼分析(第三篇:退出)

每當我們startService後,IntentService總會自己結束,在第一篇文章中,其實已經知道它爲什麼自我退出了   0、IntentService中定義的一個普通內部類,它是一個Handler類 當重寫的onHandleInt

原创 Android之MessageQueue源碼分析(第二篇:插入Message)

Message對象插入到MessageQueue管理的單鏈表中   0、兩個參數,接受一個Message對象,一個發送時間when boolean enqueueMessage(Message msg, long when)

原创 Android之UI Automator框架源碼分析(第四篇:Instrumentation對象的創建過程分析)

(注意:本文基於UI Automator測試框架版本爲2.2.0)     在第三篇分析UiDevice對象創建的過程中,我們需要使用InstrumentationRegistry的getInstrumentation()靜態方法獲取一個

原创 Android之Looper源碼分析(第二篇:循環)

android/os/Looper.java  當在某個線程中,調用了loop方法後,該線程就會一直在該方法中循環執行 public static void main(String[] args) { …

原创 Android之AsyncTask源碼分析(第一篇:加載)

(注意:本文基於API 28的源碼分析,API 29上或其他平臺的源碼略有不同) 第一次創建AsyncTask子類對象時,AsyncTask類作爲父類,會被優先加載到內存中,它持有的類變量、靜態代碼塊會在類加載的初始化階段,合併成一個<c

原创 Android之Looper源碼分析(第一篇:創建)

Looper提供了兩個public的方法,用於創建Looper對象,它的構造方法是private修飾(無法通過構造方法創建Looper對象) private Looper(boolean quitAllowed) {

原创 Java之ArrayList源碼分析(第四篇:擴容機制)

有個供我們手動觸發的擴容方法,從它開始   0、一個參數,接受一個int public void ensureCapacity(int minCapacity) { int minExpand = (eleme

原创 Java之ArrayList源碼分析(第X篇:總結)

0、類結構 public class ArrayList<E> extends AbstractList<E> implements List<E>, RandomAccess, Cloneable, java.io.S

原创 Java之Vector源碼分析(第一篇:初步瞭解)

(注意:本文基於JDK1.8) Vector與ArrayList不同,Vector是線程安全的線性表容器,Vector底層同樣基於數組持有元素,雖然Vector在實際項目中根本不會再使用了,但是它的實現方式仍然值得我們學習,通過學習Vec