原创 java容器(1):ArrayList以及迭代器

前言:前面幾篇博客簡單的敘述了幾個常用算法的思想,現在,要詳細的分析它們; 在java中,算法和數據結構大部分是體現在java容器上面,所以,接下來,我們要開始分析容器了; 第一篇分析的是兩種最簡單的數據結構之一:數組; 一提到使用數

原创 UserManager的使用

前沿:在手機的Settings當中,有一項菜單欄是用來管理手機的當前用戶的,點開這個菜單欄,會發現系統將手機用戶分成了3類,分別是管理員,訪客和自定義用戶; 管理員,訪客是系統爲我們預設的,自定義用戶可由我們自由添加或者刪除; 並且這

原创 輸入/輸出重定向

前言:通常,我們會在終端輸入一些命令,這些命令被系統處理了之後,系統又通過在終端顯示的方式將輸出結果呈現給我們,輸入和輸出都是終端;而重定向,就是指定輸入/輸出到某個文件,而不再是終端; 1.command > file comman

原创 AS常用指令,常用功能,以及常見問題

1.AS常用指令: (1)查找: ①Ctrl+shift+N 全局查找一個類或者一個文件; ②Crtl+F 搜索的時候,有幾個設置: In Comments only:僅在註釋中搜索; In Literals only:僅在文本中搜索,這

原创 android音頻系統(7):通話過程中的音頻輸出設備切換

前言:由於通話比較特殊,Android對於通話過程中音頻輸出設備的切換做了特殊處理,它在上層也是通過切換音頻播放狀態來完成切換操作的,android用CallAudioState來封裝通話過程中的音頻播放狀態; 1.CallAudio

原创 AMS剖析(2):Activity在AMS中的啓動

前言:前面已經分析了AMS的啓動,接下來就開始分析AMS的數據結構以及AMS與ActivityThread的交互; 這一篇我們跟着一個Activity的啓動流程,來分析AMS的數據結構,基於android9.0的framework源碼;

原创 android 橫豎屏切換 源碼剖析

以通知欄中下拉菜單裏面的"自動旋轉"按鈕爲例子,說下橫豎屏切換的原理; 點擊狀態欄中的"自動旋轉"按鈕,會走下面代碼: frameworks/base/packages/SystemUI/src/com/android/system

原创 PowerManagerService:電池電量管理

前言:手機電池的電量主要由兩種元件消耗:CPU和顯示屏,因此設法降低這兩種元件的耗電量就是電源管理的關鍵;       針對CPU和顯示屏,分別有兩種節約能源的方案: (1)CPU:CPU大多有低頻率和高頻率兩種工作頻率,爲了省電,大部

原创 BatteryService:電池電量管理

前言:BatteryService用於獲取電池信息、充電狀態等,如果想對Android的功耗控制有更深入的瞭解,有必要分析一下BatteryService。 1.來看下BatteryService.java: BatteryServ

原创 LightsService:led燈顯示管理

前言:LightsService是用來管理手機led指示燈顯示; 1.先看有哪些類型的燈: LightsManager.java public abstract class LightsManager { public s

原创 一系列命令的連貫執行

前沿:某些情況下,很多命令想一次性輸入,而不要分次執行,這可如何是好? 有兩種方式可以解決上述問題,一種是寫腳本(這個我們暫時不介紹),另外一種就是使用一些特殊符號來控制命令的連貫執行。 怎麼控制呢? 1.順序執行 command1

原创 shell運算符

前言:原生bash不支持簡單的數學運算,但是可以通過其他命令來實現,例如 awk 和 expr,expr 最常用。 expr 是一款表達式計算工具,使用它能完成表達式的求值操作。 1.算術運算符 #!/bin/bash val=`

原创 Shell 傳遞參數

前言:之前在編譯源碼的時候,總是使用這條編譯指令:./SLB767_meig_userdebug.sh userdebug RS51,./SLB767_meig_userdebug.sh我知道是執行SLB767_meig_userdeb

原创 test命令

前言:Shell中的 test 命令用於檢查某個條件是否成立,它可以進行數值、字符和文件三個方面的測試。test命令和關係運算符有點像。 1.數值測試 參數 說明 -eq 等於則爲真 -ne 不等於則爲真 -gt 大於則爲真 -ge

原创 Shell數組

Bash Shell 只支持一維數組(不支持多維數組),初始化時不需要定義數組大小。 Shell 數組用括號來表示,元素用"空格"符號分割開,語法格式如下: array_name=(value1 ... valuen) 1.數組表示 (