原创 [學習筆記]Android開發藝術探索:View的事件體系

View基礎知識 View是Android所有控件的基類;View是一種界面層的控件的一種抽象,代表了一個控件;ViewGroup繼承自View。 View的位置主要由它的四個定點來決定,分別對應View的四個屬性:top、lef

原创 [學習筆記]Android開發藝術探索:View的工作原理

初識ViewRoot和DecorView ViewRoot的實現是 ViewRootImpl 類,是連接WindowManager和DecorView的紐帶, View的三大流程(mearsure、layout、draw)均是通過

原创 [學習筆記]Android開發藝術探索:四大組件的工作過程之BoradcastReceiver

廣播的註冊過程 靜態註冊:在應用的安裝時由系統自動完成註冊,具體來說是PMS(PackageManagerServer)來完成整個註冊過程。其他三大組件也是。 動態註冊:從ContentWrapper的registerReceiv

原创 Protobuf: C++ 產生的代碼簡析(Proto3)

Protobuf: C++ 產生的代碼簡析(Proto3) 前言 參考官方C++ Generated Code文檔,主要是參考了官方文檔。 主要描述protocol buffer編譯器爲Proto3協議定義生成的C++代碼。 編譯

原创 [學習筆記]Android開發藝術探索:四大組件的工作過程之Service

Service有兩種工作狀態: 啓動狀態:執行後臺計算 綁定狀態:用於其他組件與Service交互 Service的啓動過程 Service的啓動從 ContextWrapper 的 startService 開始 在Cont

原创 Leetcode數據結構與算法(六)

[0081]按奇偶排序數組 給定一個非負整數數組 A,返回一個數組,在該數組中, A 的所有偶數元素之後跟着所有奇數元素。 你可以返回滿足此條件的任何數組作爲答案。 示例: 輸入:[3,1,2,4] 輸出:[2,4,3,1] 輸出

原创 [學習筆記]Android開發藝術探索:四大組件的工作過程之Activity

Activity是一種展示型組件,用於向用戶直接地展示一個界面,並且可以接收用戶的輸入 信息從而進行交互,扮演的是一個前臺界面的角色。 Service是一種計算型組件,在後臺執行一系列計算任務。它本身還是運行在主線程中 的

原创 Protobuf C++ ARM 版編譯安裝

Protobuf C++ ARM 版編譯安裝 前言 Protobuf C++ ARM 版依賴於linux版本,需要使用交叉編譯環境進行編譯,這裏使用的是 arm-none-linux-gnueabi-c++ arm-none-li

原创 OkHttp:基本使用詳解

簡介 OkHttp是一個高效的HTTP客戶端,它有以下默認特性: 支持HTTP/2,允許所有同一個主機地址的請求共享同一個socket連接 連接池減少請求延時 透明的GZIP壓縮減少響應數據的大小 緩存響應內容,避免一些完全重複

原创 Protobuf 教程:基於C++

Protobuf 教程:基於C++ 前言 參考官方Protocol Buffer Basics: C++文檔,主要是參考了官方文檔。 本文使用C++實現一個簡單的應用程序,介紹 protocol buffer C++ API,並展

原创 Leetcode數據結構與算法(一)

Leetcode數據結構與算法 [0001]求1+2+…+n 求 1+2+...+n ,要求不能使用乘除法、for、while、if、else、switch、case等關鍵字及條件判斷語句(A?B:C)。 示例 1: 輸入: n

原创 Leetcode數據結構與算法(二)

[0017] 二進制鏈表轉整數 給你一個單鏈表的引用結點 head。鏈表中每個結點的值不是 0 就是 1。已知此鏈表是一個整數數字的二進制表示形式。 請你返回該鏈表所表示數字的 十進制值 。 示例 1: 輸入:head = [1,

原创 Android10源碼AOSP(從Ubuntu14.04環境搭建到下載編譯運行)

Ubuntu14.04環境搭建 電腦爲筆記本,CPU i7-10750H,16G內存 虛擬機使用VMware Workstation 15 Pro 操作系統爲Ubuntu 64 位 14.04 AOSP比較大,安裝虛擬機的時候預留

原创 libevent詳解與實踐

文章目錄前言編譯linuxARM生成庫概述標準用法庫設置創建event base事件通知調度事件。I/O緩衝區計時器異步DNS解析事件驅動的HTTP服務器RPC服務器和客戶機的框架API參考詳細說明一、設置libevent庫1.

原创 Android10源碼下載與編譯(Mac移動硬盤)

創建區分大小寫的磁盤映像 Mac系統默認磁盤,文件系統運行不區分大小寫。Git 並不支持此類文件系統,而且此類文件系統會導致某些 Git 命令(例如 git status)的行爲出現異常。因此,建議始終在區分大小寫的文件系統中對