### Eclipse快捷鍵 ###
> 一個Eclipse骨灰級開發者總結了他認為最有用但又不太為人所知的快捷鍵組合。通過這些組合可以更加容易的瀏覽源代碼,使得整體的開發效率和質量得到提升。
#### 10個最有用的快捷鍵 ####
#### 1、ctrl+shift+r:打開資源 ####
這可能是所有快捷鍵組合中最省時間的了。這組快捷鍵可以讓你打開你的工作區中任何一個文件,而你只需要按下文件名或mask名中的前幾個字母,比如applic*.xml。美中不足的是這組快捷鍵并非在所有視圖下都能用。

#### 2、ctrl+o:快速outline ####
如果想要查看當前類的方法或某個特定方法,但又不想把代碼拉上拉下,也不想使用查找功能的話,就用ctrl+o吧。它可以列出當前類中的所有方法及屬性,你只需輸入你想要查詢的方法名,點擊enter就能夠直接跳轉至你想去的位置。

#### 3. ctrl+e:快速轉換編輯器 ####
這組快捷鍵將幫助你在打開的編輯器之間瀏覽。使用ctrl+page down或ctrl+page up可以瀏覽前后的選項卡,但是在很多文件打開的狀態下,ctrl+e會更加有效率。

#### 4. ctrl+2,L:為本地變量賦值 ####
開發過程中,我常常先編寫方法,如Calendar.getInstance(),然后通過ctrl+2快捷鍵將方法的計算結果賦值于一個本地變量之上。 這樣我節省了輸入類名,變量名以及導入聲明的時間。Ctrl+F的效果類似,不過效果是把方法的計算結果賦值于類中的域。
#### 5. alt+shift+r:重命名 ####
重命名屬性及方法在幾年前還是個很麻煩的事,需要大量使用搜索及替換,以至于代碼變得零零散散的。今天的Java IDE提供源碼處理功能,Eclipse也是一樣。現在,變量和方法的重命名變得十分簡單,你會習慣于在每次出現更好替代名稱的時候都做一次重命名。要使 用這個功能,將鼠標移動至屬性名或方法名上,按下alt+shift+r,輸入新名稱并點擊回車。就此完成。如果你重命名的是類中的一個屬性,你可以點擊alt+shift+r兩次,這會呼叫出源碼處理對話框,可以實現get及set方法的自動重命名。
#### 6. alt+shift+l以及alt+shift+m:提取本地變量及方法 ####
源碼處理還包括從大塊的代碼中提取變量和方法的功能。比如,要從一個string創建一個常量,那么就選定文本并按下alt+shift+l即可。如果同 一個string在同一類中的別處出現,它會被自動替換。方法提取也是個非常方便的功能。將大方法分解成較小的、充分定義的方法會極大的減少復雜度,并提 升代碼的可測試性。
#### 7. shift+enter及ctrl+shift+enter ####
Shift+enter在當前行之下創建一個空白行,與光標是否在行末無關。Ctrl+shift+enter則在當前行之前插入空白行。
#### 8. Alt+方向鍵 ####
這也是個節省時間的法寶。這個組合將當前行的內容往上或下移動。在try/catch部分,這個快捷方式尤其好使。
#### 9. ctrl+m ####
大顯示屏幕能夠提高工作效率是大家都知道的。Ctrl+m是編輯器窗口最大化的快捷鍵。
#### 10. ctrl+.及ctrl+1:下一個錯誤及快速修改 ####
ctrl+.將光標移動至當前文件中的下一個報錯處或警告處。這組快捷鍵我一般與ctrl+1一并使用,即修改建議的快捷鍵。新版Eclipse的修改建 議做的很不錯,可以幫你解決很多問題,如方法中的缺失參數,throw/catch exception,未執行的方法等等。

更多快捷鍵組合可在Eclipse按下ctrl+shift+L查看。
#### **常用的熱鍵組合** ####
讓我們按照使用頻率來看看我最愛用的一些熱鍵組合。(注:以下內容在Eclipse3.02及一上版本通過測試)
1. **Control-Shift-T: 打開類型(Open type)**。如果你不是有意磨洋工,還是忘記通過源碼樹(source tree)打開的方式吧。用eclipse很容易打開接口的實現類的,按ctrl+t會列出接口的實現類列表
2. **Control-Shift-R: 打開資源(不只是用來尋找Java文件)**。小提示:利用Navigator視圖的黃色雙向箭頭按鈕讓你的編輯窗口和導航器相關聯。這會讓你打開的文件對應顯示在導航器的層級結構中,這樣便于組織信息。如果這影響了速度,就關掉它。
3. **F3: 打開申明(Open declaration)**。或者,利用Declaration Tab(在Java視圖模式下,選擇Windows --> Show View -- > Declaration)。當你選中代碼中的一個方法,然后按這個按鍵,它會把整個方法在申明方框里顯示出來。
4. **Alt-left arrow: 在導航歷史記錄(Navigation History)中后退**。就像Web瀏覽器的后退按鈕一樣,在利用F3跳轉之后,特別有用。(用來返回原先編譯的地方)
5. **Alt-right arrow: 導航歷史記錄中向前**。
6. **Control-Q: 回到最后一次編輯的地方**。這個快捷鍵也是當你在代碼中跳轉后用的。特別是當你鉆的過深,忘記你最初在做什么的時候。
7. **Control-Shift-G: 在workspace中搜索引用(reference)**。這 是重構的前提。對于方法,這個熱鍵的作用和F3恰好相反。它使你在方法的棧中,向上找出一個方法的所有調用者。一個與此相關的功能是開啟“標記”功能 (occurrence marking) 。選擇Windows->Preferences->Java-> Editor-> Mark Occurrences,勾選選項。這時,當你單擊一個元素的時候,代碼中所有該元素存在的地方都會被高亮顯示。我個人只使用“標記本地變量”(Mark Local Variables)。注意:太多的高亮顯示會拖慢Eclipse。
8. **Control-Shift-F: CodeàJavaàPreferencesà根據代碼風格設定重新格式化代碼**。我 們的團隊有統一的代碼格式,我們把它放在我們的wiki上。要這么做,我們打開Eclipse,選擇Window Style,然后設置Code Formatter,Code Style和Organize Imports。利用導出(Export)功能來生成配置文件。我們把這些配置文件放在wiki上,然后團隊里的每個人都導入到自己的Eclipse中。
9. **Control-O: 快速概要(quick outline)**。通過這個快捷鍵,你可以迅速的跳到一個方法或者屬性,只需要輸入名字的頭幾個字母。
10. **Control-/: 對一行注釋或取消注釋**。對于多行也同樣適用。
11. **Control-Alt-down arrow: 復制高亮顯示的一行或多行**。
12. **Alt-down arrow: 將一行或多行向下移動**。Alt-up arrow會向上移動。
其他的熱鍵在菜單里有。你可以通過按下Control-Shift-L(從3.1版本開始), 看到所有快捷鍵的列表。按下Control-Shift-L兩次,會顯示熱鍵對話框(Keys Preferences dialog),你可以在這里自己設置熱鍵。我歡迎你在Talkback部分發表你的Eclipse提示。
#### **其他的Eclipse竅門** ####
我總結了幾個相關的小竅門:
**鎖定命令行窗口**:在命令行視圖中(Window ->Show View ->Other ->Basic ->Console),試試看用滾動鎖定按鈕來鎖定控制臺輸出不要滾屏。
**使用Ant視圖:** 在我的Java或Debug模式下,我喜歡顯示出Ant視圖,這樣我就可以迅速的運行Ant任務。通過Window Ant可以找到該視圖。把Ant視圖放在屏幕的一角, 通過“添加編譯文件(Addà Other à Show View à Buildfiles)”按鈕來添加build.xml文件。在3.1版本中,甚至支持Ant調試腳本語言。
**自動遍歷一個集合**:for + Control-Space: 如果你還不知道,那么你應該記住Control-Space是自動完成功能。在Eclipse中,你還可以自動完成結構。在一個數組或集合范圍內,試試看 輸入“for”然后按下Control-Space鍵。Eclipse會問你你想要遍歷哪一個集合然后自動完成循環代碼。
**使用分級布局**: 在包瀏覽視圖(Package Explorer view)中默認的布局(扁平式)方式讓我困惑,它把包的全名顯示在導航樹(navigation tree)中。我更喜歡我源碼的包和文件系統視圖,在Eclipse中叫做分級布局(Hierarchical Layout)。要切換到這種模式,點擊包瀏覽視圖中向下的按鈕,選擇布局(Layout),然后選擇分級(Hierarchial)。
**一次顯示多個文件**:你可以一次瀏覽多個文件。把不在激活狀態的編輯窗口拖到激活窗口的底部或側邊的滾動條上,就可以打開該編輯窗口。這是我能描述該竅門的最好方式了。
**同時打開兩個Eclipse**: 要將改動從一個CVS分支上合并到另外一個上,我喜歡通過同時打開兩個工作目錄(Workspace)不同Eclipse來實現。這樣我可以通過比較 CVS上的最新版本看到所有的變化(右鍵單擊工程,然后選擇Compare Lastest from HEAD)然后把每一個變化都合并到另外一個CVS分支上。啟動多個Eclipse的最簡單的方法是利用Eclipseàwith Launcher。
**Implementors插件**:安裝一個能夠跳到一個接口的實現的插件。如果你是個dependency injection 粉絲,或者正在基于編寫優良的接口工作,那么你需要一個這樣的插件來加速代碼導航。 你可以在SourceForge找到這個插件。
**Ctrl+Alt+H**
如果你想知道一個類的方法到底被那些其他的類調用,那么請選中這個方法名,然后按“Ctrl+Alt+H”,
Eclipse就會顯示出這個方法被哪些方法調用,最終產生一個調用關系樹。
**Ctrl+左鍵**
這個是大多數人經常用到的,用來查看變量、方法、類的定義
**Ctrl+O**
查看一個類的綱要,列出其方法和成員變量。提示:再多按一次Ctrl+O,可以列出該類繼承的方法和變量。
助記:"O"--->"Outline"--->"綱要"
**Ctrl+T**
查看一個類的繼承關系樹,是自頂向下的,再多按一次Ctrl+T, 會換成自底向上的顯示結構。
提示:選中一個方法名,按Ctrl+T,可以查看到有這個同名方法的父類、子類、接口。
助記:"T"------->"Tree"----->"層次樹"
**Alt+左右方向鍵**
我們經常會遇到看代碼時Ctrl+左鍵,層層跟蹤,然后迷失在代碼中的情況,這時只需要按“Alt+左方向鍵
”就可以退回到上次閱讀的位置,同理,按“Alt+右方向鍵”會前進到剛才退回的閱讀位置,就像瀏覽器的
前進和后退按鈕一樣。
**導入包**:Ctrl+Shift+O
#### 總結如下 :
#### 編輯
|作用域 |功能 |快捷鍵 |
|--|--|--|
| 全局| 查找并替換| Ctrl+F |
|文本編輯器 |查找上一個 |Ctrl+Shift+K |
|文本編輯器 |查找下一個 |Ctrl+K |
|全局 |撤銷 |Ctrl+Z |
|全局 |復制 |Ctrl+C |
|全局 |恢復上一個選擇 |Alt+Shift+↓ |
|全局| 剪切| Ctrl+X |
|全局| 快速修正| Ctrl1+1 |
|全局 |內容輔助 |Alt+/ |
|全局 |全部選中| Ctrl+A |
|全局 |刪除| Delete |
|全局 |上下文信息| Alt+? 、Alt+Shift+? Ctrl+Shift+Space|
|Java編輯器 |顯示工具提示描述 |F2 |
|Java編輯器 |選擇封裝元素 |Alt+Shift+↑ |
|Java編輯器 |選擇上一個元素 |Alt+Shift+← |
|Java編輯器 |選擇下一個元素 |Alt+Shift+→ |
|文本編輯器 |增量查找 |Ctrl+J |
|文本編輯器 |增量逆向查找 |Ctrl+Shift+J |
|全局 |粘貼 |Ctrl+V |
|全局 |重做| Ctrl+Y |
#### 查看 ####
|作用域 |功能 |快捷鍵 |
|--|--|--|
|全局 |放大 |Ctrl+= |
|全局 |縮小| Ctrl+- |
#### 窗口 ####
|作用域 |功能| 快捷鍵|
|--|--|--|
|全局 |激活編輯器| F12 |
|全局| 切換編輯器| Ctrl+Shift+W |
|全局 |上一個編輯器 |Ctrl+Shift+F6 |
|全局 |上一個視圖 |Ctrl+Shift+F7 |
|全局 |上一個透視圖 |Ctrl+Shift+F8 |
|全局 |下一個編輯器 |Ctrl+F6 |
|全局 |下一個視圖 |Ctrl+F7 |
|全局 |下一個透視圖 |Ctrl+F8 |
|文本編輯器 |顯示標尺上下文菜單| Ctrl+W |
|全局| 顯示視圖菜單 |Ctrl+F10 |
|全局 |顯示系統菜單 |Alt+- |
#### 導航 ####
|作用域 |功能| 快捷鍵 |
|--|--|--|
|Java編輯器 |打開結構 Ctrl+F3 |
|全局 |打開類型| Ctrl+Shift+T |
|全局 |打開類型層次結構 |F4 |
|全局 |打開聲明 |F3 |
|全局 |打開外部javadoc |Shift+F2 |
|全局 |打開資源 |Ctrl+Shift+R |
|全局 |后退歷史記錄 |Alt+← |
|全局 |前進歷史記錄 |Alt+→ |
|全局 |上一個 |Ctrl+, |
|全局 |下一個 |Ctrl+. |
|Java編輯器 |顯示大綱 Ctrl+O |
|全局 |在層次結構中打開類型 |Ctrl+Shift+H |
|全局 |轉至匹配的括號 |Ctrl+Shift+P |
|全局 |轉至上一個編輯位置 |Ctrl+Q |
|Java編輯器 |轉至上一個成員 |Ctrl+Shift+↑ |
|Java編輯器 |轉至下一個成員 |Ctrl+Shift+↓ |
|文本編輯器 |轉至行 |Ctrl+L |
#### 搜索 ####
|作用域 |功能 |快捷鍵 |
|--|--|--|
|全局 |出現在文件中 |Ctrl+Shift+U |
|全局 |打開搜索對話框 |Ctrl+H |
|全局 |工作區中的聲明 |Ctrl+G |
|全局 |工作區中的引用 |Ctrl+Shift+G |
#### 文本編輯 ####
|作用域 |功能 |快捷鍵 |
|--|--|--|
|文本編輯器 |改寫切換 |Insert |
|文本編輯器 |上滾行 |Ctrl+↑ |
|文本編輯器 |下滾行 |Ctrl+↓ |
#### 文件 ####
|作用域 |功能 |快捷鍵 |
|--|--|--|
|全局 |保存| Ctrl+X 、Ctrl+S |
|全局 |打印| Ctrl+P |
|全局 |關閉| Ctrl+F4 |
|全局 |全部保存| Ctrl+Shift+S |
|全局 |全部關閉| Ctrl+Shift+F4 |
|全局 |屬性 |Alt+Enter |
|全局 |新建 |Ctrl+N |
#### 項目 ####
|作用域 |功能 |快捷鍵 |
|--|--|--|
|全局 |全部構建 |Ctrl+B |
#### 源代碼 ####
|作用域 |功能 |快捷鍵 |
|--|--|--|
|Java編輯器 |格式化| Ctrl+Shift+F |
|Java編輯器 |取消注釋| Ctrl+/ |
|Java編輯器 |注釋 |Ctrl+/ |
|Java編輯器 |添加單個import| Ctrl+Shift+M |
|Java編輯器 |組織多個import| Ctrl+Shift+O |
|Java編輯器 |使用try/catch塊來包圍 未設置,太常用了,所以在這里列出,建議自己設置。 也可以使用Ctrl+1自動修正。 |
#### 調試/運行 ####
|作用域 |功能 |快捷鍵 |
|--|--|--|
|全局 |單步返回 |F7 |
|全局 |單步跳過 |F6 |
|全局 |單步跳入 |F5 |
|全局 |單步跳入選擇 |Ctrl+F5 |
|全局 |調試上次啟動 |F11 |
|全局 |繼續 |F8 |
|全局 |使用過濾器單步執行 |Shift+F5 |
|全局 |添加/去除斷點 |Ctrl+Shift+B |
|全局 |顯示 |Ctrl+D |
|全局 |運行上次啟動 |Ctrl+F11 |
|全局 |運行至行 |Ctrl+R |
|全局 |執行 |Ctrl+U |
#### 重構 ####
|作用域| 功能| 快捷鍵 |
|--|--|--|
|全局 |撤銷重構 |Alt+Shift+Z |
|全局 |抽取方法 |Alt+Shift+M |
|全局 |抽取局部變量 |Alt+Shift+L |
|全局 |內聯 |Alt+Shift+I |
|全局 |移動 |Alt+Shift+V |
|全局 |重命名 |Alt+Shift+R |
|全局 |重做 |Alt+Shift+Y|
#### 其他 ####
- (1)Ctrl+M切換窗口的大小
- (2)Ctrl+Q跳到最后一次的編輯處
- (3)F2當鼠標放在一個標記處出現Tooltip時候按F2則把鼠標移開時Tooltip還會顯示即Show Tooltip Description。
- F3跳到聲明或定義的地方。
- F5單步調試進入函數內部。
- F6單步調試不進入函數內部,如果裝了金山詞霸2006則要把“取詞開關”的快捷鍵改成其他的。
- F7由函數內部返回到調用處。
- F8一直執行到下一個斷點。
- (4)Ctrl+Pg~對于XML文件是切換代碼和圖示窗口
- (5)Ctrl+Alt+I看Java文件中變量的相關信息
- (6)Ctrl+PgUp對于代碼窗口是打開“Show List”下拉框,在此下拉框里顯示有最近曾打開的文件
- (7)Ctrl+/ 在代碼窗口中是這種//~注釋。
- Ctrl+Shift+/ 在代碼窗口中是這種/*~*/注釋,在JSP文件窗口中是〈!--~--〉。
- (8)Alt+Shift+O(或點擊工具欄中的Toggle Mark Occurrences按鈕) 當點擊某個標記時可使本頁面中其他
- 地方的此標記黃色凸顯,并且窗口的右邊框會出現白色的方塊,點擊此方塊會跳到此標記處。
- (9)右擊窗口的左邊框即加斷點的地方選Show Line Numbers可以加行號。
- (10)Ctrl+I格式化激活的元素Format Active Elements。
- Ctrl+Shift+F格式化文件Format Document。
- (11)Ctrl+S保存當前文件。
- Ctrl+Shift+S保存所有未保存的文件。
- (12)Ctrl+Shift+M(先把光標放在需導入包的類名上) 作用是加Import語句。
- Ctrl+Shift+O作用是缺少的Import語句被加入,多余的Import語句被刪除。
- (13)Ctrl+Space提示鍵入內容即Content Assist,此時要將輸入法中Chinese(Simplified)IME-Ime/Nonlme Toggle的快捷鍵(用于切換英文和其他文字)改成其他的。
- Ctrl+Shift+Space提示信息即Context Information。
- (14)雙擊窗口的左邊框可以加斷點。
- (15)Ctrl+D刪除當前行。
#### Eclipse快捷鍵大全 ####
- Ctrl+1 快速修復(最經典的快捷鍵,就不用多說了)
- Ctrl+D: 刪除當前行
- Ctrl+Alt+↓ 復制當前行到下一行(復制增加)
- Ctrl+Alt+↑ 復制當前行到上一行(復制增加)
- Alt+↓ 當前行和下面一行交互位置(特別實用,可以省去先剪切,再粘貼了)
- Alt+↑ 當前行和上面一行交互位置(同上)
- Alt+← 前一個編輯的頁面
- Alt+→ 下一個編輯的頁面(當然是針對上面那條來說了)
- Alt+Enter 顯示當前選擇資源(工程,or 文件 or文件)的屬性
- Shift+Enter 在當前行的下一行插入空行(這時鼠標可以在當前行的任一位置,不一定是最后)
- Shift+Ctrl+Enter 在當前行插入空行(原理同上條)
- Ctrl+Q 定位到最后編輯的地方
- Ctrl+L 定位在某行 (對于程序超過100的人就有福音了)
- Ctrl+M 最大化當前的Edit或View (再按則反之)
- Ctrl+/ 注釋當前行,再按則取消注釋
- Ctrl+O 快速顯示 OutLine
- Ctrl+T 快速顯示當前類的繼承結構
- Ctrl+W 關閉當前Editer
- Ctrl+K 參照選中的Word快速定位到下一個
- Ctrl+E 快速顯示當前Editer的下拉列表(如果當前頁面沒有顯示的用黑體表示)
- Ctrl+/(小鍵盤) 折疊當前類中的所有代碼
- Ctrl+×(小鍵盤) 展開當前類中的所有代碼
- Ctrl+Space 代碼助手完成一些代碼的插入(但一般和輸入法有沖突,可以修改輸入法的熱鍵,也可以暫用Alt+/來代替)
- Ctrl+Shift+E 顯示管理當前打開的所有的View的管理器(可以選擇關閉,激活等操作)
- Ctrl+J 正向增量查找(按下Ctrl+J后,你所輸入的每個字母編輯器都提供快速匹配定位到某個單詞,如果沒有,則在stutes line中顯示沒有找到了,查一個單詞時,特別實用,這個功能Idea兩年前就有了)
- Ctrl+Shift+J 反向增量查找(和上條相同,只不過是從后往前查)
- Ctrl+Shift+F4 關閉所有打開的Editer
- Ctrl+Shift+X 把當前選中的文本全部變味小寫
- Ctrl+Shift+Y 把當前選中的文本全部變為小寫
- Ctrl+Shift+F 格式化當前代碼
- Ctrl+Shift+P 定位到對于的匹配符(譬如{}) (從前面定位后面時,光標要在匹配符里面,后面到前面,則反之)下面的快捷鍵是重構里面常用的,本人就自己喜歡且常用的整理一下(注:一般重構的快捷鍵都是Alt+Shift開頭的了)
- Alt+Shift+R 重命名 (是我自己最愛用的一個了,尤其是變量和類的Rename,比手工方法能節省很多勞動力)
- Alt+Shift+M 抽取方法 (這是重構里面最常用的方法之一了,尤其是對一大堆泥團代碼有用)
- Alt+Shift+C 修改函數結構(比較實用,有N個函數調用了這個方法,修改一次搞定)
- Alt+Shift+L 抽取本地變量( 可以直接把一些魔法數字和字符串抽取成一個變量,尤其是多處調用的時候)
- Alt+Shift+F 把Class中的local變量變為field變量 (比較實用的功能)
- Alt+Shift+I 合并變量(可能這樣說有點不妥Inline)
- Alt+Shift+V 移動函數和變量(不怎么常用)
- Alt+Shift+Z 重構的后悔藥(Undo)
- 文章概述
- 下載Android源碼以及查看源碼
- win10 平臺通過VMware Workstation安裝Ubuntu
- Linux系統安裝Ubuntu編譯Android源碼
- Eclipse快捷鍵大全
- 前言
- 第一篇 初識Android系統
- 第一章 準備知識
- 1.1 Linux內核參考書籍
- 1.2 Android應用程序參考書籍
- 1.3 下載、編譯和運行Android源代碼
- 1.3.1 下載Android源代碼
- 1.3.2 編譯Android源代碼
- 1.3.3 運行Android模擬器
- 1.4 下載、編譯和運行Android內核源代碼
- 1.4.1 下載Android內核源代碼
- 1.4.2 編譯Android內核源代碼
- 1.4.3 運行Android模擬器
- 1.5 開發第一個Android應用程序
- 1.6 單獨編譯和打包Android應用程序模塊
- 1.6.1 導入單獨編譯模塊的mmm命令
- 1.6.2 單獨編譯Android應用程序模塊
- 1.6.3 重新打包Android系統鏡像文件
- 第二章 硬件抽象層
- 2.1 開發Android硬件驅動程序
- 2.1.1 實現內核驅動程序模塊
- 2.1.2 修改內核Kconfig文件
- 2.1.3 修改內核Makefile文件
- 2.1.4 編譯內核驅動程序模塊
- 2.1.5 驗證內核驅動程序模塊
- 2.2 開發C可執行程序驗證Android硬件驅動程序
- 2.3 開發Android硬件抽象層模塊
- 2.3.1 硬件抽象層模塊編寫規范
- 2.3.1.1 硬件抽象層模塊文件命名規范
- 2.3.1.2 硬件抽象層模塊結構體定義規范
- 2.3.2 編寫硬件抽象層模塊接口
- 2.3.3 硬件抽象層模塊的加載過程
- 2.3.4 處理硬件設備訪問權限問題
- 2.4 開發Android硬件訪問服務
- 2.4.1 定義硬件訪問服務接口
- 2.4.2 實現硬件訪問服務
- 2.4.3 實現硬件訪問服務的JNI方法
- 2.4.4 啟動硬件訪問服務
- 2.5 開發Android應用程序來使用硬件訪問服務
- 第三章 智能指針
- 3.1 輕量級指針
- 3.1.1 實現原理分析
- 3.1.2 使用實例分析
- 3.2 強指針和弱指針
- 3.2.1 強指針的實現原理分析
- 3.2.2 弱指針的實現原理分析
- 3.2.3 應用實例分析
- 第二篇 Android專用驅動系統
- 第四章 Logger日志系統
- 4.1 Logger日志格式
- 4.2 Logger日志驅動程序
- 4.2.1 基礎數據結構
- 4.2.2 日志設備的初始化過程
- 4.2.3 日志設備文件的打開過程
- 4.2.4 日志記錄的讀取過程
- 4.2.5 日志記錄的寫入過程
- 4.3 運行時庫層日志庫
- 4.4 C/C++日志寫入接口
- 4.5 Java日志寫入接口
- 4.6 Logcat工具分析
- 4.6.1 基礎數據結構
- 4.6.2 初始化過程
- 4.6.3 日志記錄的讀取過程
- 4.6.4 日志記錄的輸出過程
- 第五章 Binder進程間通信系統
- 5.1 Binder驅動程序
- 5.1.1 基礎數據結構
- 5.1.2 Binder設備的初始化過程
- 5.1.3 Binder設備文件的打開過程
- 5.1.4 設備文件內存映射過程
- 5.1.5 內核緩沖區管理
- 5.1.5.1 分配內核緩沖區
- 5.1.5.2 釋放內核緩沖區
- 5.1.5.3 查詢內核緩沖區
- 5.2 Binder進程間通信庫
- 5.3 Binder進程間通信應用實例
- 5.4 Binder對象引用計數技術
- 5.4.1 Binder本地對象的生命周期
- 5.4.2 Binder實體對象的生命周期
- 5.4.3 Binder引用對象的生命周期
- 5.4.4 Binder代理對象的生命周期
- 5.5 Binder對象死亡通知機制
- 5.5.1 注冊死亡接收通知
- 5.5.2 發送死亡接收通知
- 5.5.3 注銷死亡接收通知
- 5.6 Service Manager的啟動過程
- 5.6.1 打開和映射Binder設備文件
- 5.6.2 注冊成為Binder上下文管理者
- 5.6.3 循環等待Client進程請求
- 5.7 Service Manager代理對象接口的獲取過程
- 5.8 Service的啟動過程
- 5.8.1 注冊Service組件
- 5.8.1.1 封裝通信數據為Parcel對象
- 5.8.1.2 發送和處理BC_TRANSACTION命令協議
- 5.8.1.3 發送和處理BR_TRANSACTION返回協議
- 5.8.1.4 發送和處理BC_REPLY命令協議
- 5.8.1.5 發送和處理BR_REPLY返回協議
- 5.8.2 循環等待Client進程請求
- 5.9 Service代理對象接口的獲取過程
- 5.10 Binder進程間通信機制的Java實現接口
- 5.10.1 獲取Service Manager的Java代理對象接口
- 5.10.2 AIDL服務接口解析
- 5.10.3 Java服務的啟動過程
- 5.10.4 獲取Java服務的代理對象接口
- 5.10.5 Java服務的調用過程
- 第六章 Ashmem匿名共享內存系統
- 6.1 Ashmem驅動程序
- 6.1.1 相關數據結構
- 6.1.2 設備初始化過程
- 6.1.3 設備文件打開過程
- 6.1.4 設備文件內存映射過程
- 6.1.5 內存塊的鎖定和解鎖過程
- 6.1.6 解鎖狀態內存塊的回收過程
- 6.2 運行時庫cutils的匿名共享內存接口
- 6.3 匿名共享內存的C++訪問接口
- 6.3.1 MemoryHeapBase
- 6.3.1.1 Server端的實現
- 6.3.1.2 Client端的實現
- 6.3.2 MemoryBase
- 6.3.2.1 Server端的實現
- 6.3.2.2 Client端的實現
- 6.3.3 應用實例
- 6.4 匿名共享內存的Java訪問接口
- 6.4.1 MemoryFile
- 6.4.2 應用實例
- 6.5 匿名共享內存的共享原理分析
- 第三篇 Android應用程序框架篇
- 第七章 Activity組件的啟動過程
- 7.1 Activity組件應用實例
- 7.2 根Activity的啟動過程
- 7.3 Activity在進程內的啟動過程
- 7.4 Activity在新進程中的啟動過程
- 第八章 Service組件的啟動過程
- 8.1 Service組件應用實例
- 8.2 Service在新進程中的啟動過程
- 8.3 Service在進程內的綁定過程
- 第九章 Android系統廣播機制
- 9.1 廣播應用實例
- 9.2 廣播接收者的注冊過程
- 9.3 廣播的發送過程
- 第十章 Content Provider組件的實現原理
- 10.1 Content Provider組件應用實例
- 10.1.1 ArticlesProvider
- 10.1.2 Article
- 10.2 Content Provider組件的啟動過程
- 10.3 Content Provider組件的數據共享原理
- 10.4 Content Provider組件的數據更新通知機制
- 10.4.1 內容觀察者的注冊過程
- 10.4.2 數據更新的通知過程
- 第十一章 Zygote和System進程的啟動過程
- 11.1 Zygote進程的啟動腳本
- 11.2 Zygote進程的啟動過程
- 11.3 System進程的啟動過程
- 第十二章 Android應用程序進程的啟動過程
- 12.1 應用程序進程的創建過程
- 12.2 Binder線程池的啟動過程
- 12.3 消息循環的創建過程
- 第十三章 Android應用程序的消息處理機制
- 13.1 創建線程消息隊列
- 13.2 線程消息循環過程
- 13.3 線程消息發送過程
- 13.4 線程消息處理過程
- 第十四章 Android應用程序的鍵盤消息處理機制
- 14.1 InputManager的啟動過程
- 14.1.1 創建InputManager
- 14.1.2 啟動InputManager
- 14.1.3 啟動InputDispatcher
- 14.1.4 啟動InputReader
- 14.2 InputChannel的注冊過程
- 14.2.1 創建InputChannel
- 14.2.2 注冊Server端InputChannel
- 14.2.3 注冊當前激活窗口
- 14.2.4 注冊Client端InputChannel
- 14.3 鍵盤消息的分發過程
- 14.3.1 InputReader處理鍵盤事件
- 14.3.2 InputDispatcher分發鍵盤事件
- 14.3.3 當前激活的窗口獲得鍵盤消息
- 14.3.4 InputDispatcher獲得鍵盤事件處理完成通知
- 14.4 InputChannel的注銷過程
- 14.4.1 銷毀應用程序窗口
- 14.4.2 注銷Client端InputChannel
- 14.4.3 注銷Server端InputChannel
- 第十五章 Android應用程序線程的消息循環模型
- 15.1 應用程序主線程消息循環模型
- 15.2 界面無關的應用程序子線程消息循環模型
- 15.3 界面相關的應用程序子線程消息循環模型
- 第十六章 Android應用程序的安裝和顯示過程
- 16.1 應用程序的安裝過程
- 16.2 應用程序的顯示過程