1.插件類型 Gradle的插件分為兩種類型:腳本插件(script plugins)和二進(jìn)制插件(binary plugins)。 腳本插件就是額外的構(gòu)建腳本,腳本插件通常...
1.插件類型 Gradle的插件分為兩種類型:腳本插件(script plugins)和二進(jìn)制插件(binary plugins)。 腳本插件就是額外的構(gòu)建腳本,腳本插件通常...
LRU 全稱是 Least Recently Used,即最近最久未使用算法,它是頁面置換算法的一種。 原理 如果一個(gè)數(shù)據(jù)在最近一段時(shí)間沒有被訪問到,那么在將來它被訪問的可能...
Java 泛型(generics)是 JDK 5 中引入的一個(gè)新特性, 泛型提供了編譯時(shí)類型安全檢測(cè)機(jī)制,該機(jī)制允許程序員在編譯時(shí)檢測(cè)到非法的類型。泛型的本質(zhì)是參數(shù)化類型,也...
對(duì)于單一職責(zé)原則,如何判定某個(gè)類的職責(zé)是否夠“單一”? 如何理解單一職責(zé)原則(SRP)? 一個(gè)類只負(fù)責(zé)完成一個(gè)職責(zé)或者功能。 也就是說,不要設(shè)計(jì)大而全的類,要設(shè)計(jì)粒度小、功能...
什么情況下要重構(gòu)?到底重構(gòu)什么?又該如何重構(gòu)? 重構(gòu)的目的:為什么要重構(gòu)(why)? 在保持功能不變的前提下,利用設(shè)計(jì)思想、原則、模式、編程規(guī)范等理論來優(yōu)化代碼,修改設(shè)計(jì)上的...
創(chuàng)建型模式主要解決對(duì)象的創(chuàng)建問題,封裝復(fù)雜的創(chuàng)建過程,解耦對(duì)象的創(chuàng)建代碼和使用代碼。 單例模式 單例設(shè)計(jì)模式(Singleton Design Pattern)理解起來非常簡(jiǎn)...
結(jié)構(gòu)型模式主要總結(jié)了一些類或?qū)ο蠼M合在一起的經(jīng)典結(jié)構(gòu),這些經(jīng)典的結(jié)構(gòu)可以解決特定應(yīng)用場(chǎng)景的問題。 代理模式 代理模式的原理與實(shí)現(xiàn) 在不改變?cè)碱悾ɑ蚪斜淮眍悾┑那闆r下,通過...
行為型設(shè)計(jì)模式主要解決的就是“類或?qū)ο笾g的交互”問題。 觀察者模式 在對(duì)象之間定義一個(gè)一對(duì)多的依賴,當(dāng)一個(gè)對(duì)象狀態(tài)改變的時(shí)候,所有依賴的對(duì)象都會(huì)自動(dòng)收到通知。 設(shè)計(jì)模式要干...
從哪些維度評(píng)判代碼質(zhì)量的好壞?如何具備寫出高質(zhì)量代碼的能力? 最常用的評(píng)價(jià)標(biāo)準(zhǔn)有哪幾個(gè)? 可維護(hù)性(maintainability) 可讀性(readability) 可擴(kuò)展...
11.1 應(yīng)用程序中的View框架 View 和 ViewRoot ViewRoot 可以被理解為“View樹的管理者”--它有一個(gè) mView 成員變量,指向它所管理的 V...
“窗口”是一個(gè)抽象的概念,從用戶角度來講,它是一個(gè)“界面”;從 SurfaceFlinger 角度來看,它是一個(gè) Layer,承載著和“界面”有關(guān)的數(shù)據(jù)和屬性;從 WMS 的...
GUI(Graphic User Interface)即“圖形用戶界面”。Android 的 GUI 系統(tǒng)是基于 OpenGL/EGL 實(shí)現(xiàn)的。 9.4 Android中的本...
8.1 AMS功能概述 AMS 寄存于 SystemServer 中,在系統(tǒng)啟動(dòng)時(shí),創(chuàng)建一個(gè)線程來循環(huán)處理客戶的請(qǐng)求。 四大組件狀態(tài)管理 組件狀態(tài)查詢 Task 相關(guān) 其他輔...
7.1 第一個(gè)系統(tǒng)進(jìn)程(init) Android 設(shè)備的啟動(dòng)必須經(jīng)歷3個(gè)階段,即 Boot Loader、Linux Kernel 和 Android 系統(tǒng)服務(wù),默認(rèn)情況下...
Binder 是 Android 中使用最廣泛的 IPC 機(jī)制。 Binder 驅(qū)動(dòng)(路由器) Service Manager(DNS) Binder Client(客戶端)...
5.1 Android 進(jìn)程和線程 進(jìn)程(Precess)是程序的一個(gè)運(yùn)行實(shí)例,線程(Thread)是 CPU 調(diào)度的基本單位。 四大組件不是程序(進(jìn)程)的全部,而只是它的“...
4.1 計(jì)算機(jī)體系結(jié)構(gòu)(Computer Architecture) 馮·諾依曼結(jié)構(gòu) 內(nèi)存儲(chǔ)器,運(yùn)算器,控制器,輸入設(shè)備,輸出設(shè)備 采用二進(jìn)制,拋棄十進(jìn)制。 程序存儲(chǔ)(sto...
函數(shù)式接口 Java 8 引入的一個(gè)核心概念是函數(shù)式接口(Functional Interfaces)。通過在接口里面添加一個(gè)抽象方法,這些方法可以直接從接口中運(yùn)行。如果一個(gè)...
代理相關(guān)概念 在某些情況下,我們不希望或是不能直接訪問對(duì)象 A,而是通過訪問一個(gè)中介對(duì)象 B,由 B 去訪問 A 達(dá)成目的,這種方式我們就稱為代理。 這里對(duì)象 A 所屬類我們...