原创 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