(2). 布局優化
1. 刪除布局中無用的元件和層級,有選擇地使用效能較低的viewgroup,linearlayout的複雜度小於relativelayout
2. 使用、
、
等標籤;
標籤主要用於布局重用,
標籤一般和
配合使用,它可以減少布局中的層級;
標籤則提供了按需載入的功能,當需要的時候才會將viewstub中的布局載入到記憶體,提供了程式的初始化效率。
3.標籤只支援
android:layout_
開頭的屬性,android:id
屬性例外。
4.viewstub
繼承自view,它非常輕量級且寬高都為0,它本省不參與任何的布局和繪製過程。實際開發中,很多布局檔案在正常情況下都不會顯示,例如網路異常時的介面,這個時候就沒有必要在整個介面初始化的時候載入進行,通過viewstub可以做到在需要的時候再載入。
android:id="@+id/stub_import"
android:inflatedid="@+id/panel_import"
android:layout="@layout/layout_network_error"/>
其中stub_import是viewstub的id,而panel_import是layout/layout_network_error這個布局的根元素的id。當viewstub通過setvisibility或者inflate方法載入後,viewstub就會被它內部的布局檔案替換掉,這個時候viewstub就不再是整個布局結構中的一部分了。
(3). 繪製優化
1. 在ondraw
中不要建立新的布局物件,因為ondraw
會被頻繁呼叫;
2.ondraw
方法中不要指定耗時任務,也不能執行成千上萬次的迴圈操作。
(4). 記憶體洩露優化
可能導致記憶體洩露的場景很多,例如靜態變數、單例模式、屬性動畫、asynctask、handler等等。
(5). 相應速度優化和anr日誌分析
1. anr出現的情況:activity如果5s
內沒有響應螢幕觸控事件或者鍵盤輸入世界就會anr,而broadcastreceiver如果10s
內沒有執行完操作也會出現anr。
2. 當乙個程序發生了anr之後,系統會在/data/anr
目錄下建立乙個檔案traces.txt
,通過分析這個檔案就能定位anr的原因。
(6). listview和bitmap優化
1. listview優化:採用viewholder
並避免在getview
方法中執行耗時操作;根據列表的滑動狀態來繪製任務的執行頻率;可以嘗試開啟硬體加速來使listview的滑動更加流暢。
2. bitmap優化:根據需要對進行取樣,具體詳情看第十二章
(7). 執行緒優化
看第十一章
(8). 其他優化建議
1. 不要過多食用列舉,列舉占用的記憶體空間要比整型大;
2. 常量請食用static final
來修飾;
3. 食用一些android特有的資料結構,比如sparsearray
和pair
等,他們都具有更好的效能;
4. 適當食用軟引用和弱引用;
5. 採用記憶體快取和磁碟快取;
6. 盡量採用靜態內部類,這樣可以避免潛在的由於內部類而導致的記憶體洩露。
(9). mat是功能強大的記憶體分析工具,主要有histograms
和dominator tree
等功能。
(10). 提高程式的可維護性
1. 命名要規範,要能正確地傳達出變數或者方法的含義,少用縮寫,關於變數的字首可以參考android原始碼的命名方式,比如私有成員以m開頭,靜態成員以s開頭,常量則全部用大寫字母表示,等等。
2. **的排版上需要留出合理的空白來區分不同的**塊,其中同類變數的宣告要放在一組,兩類變數之間要留出一行空白作為分割槽。
3. 僅為非常關鍵的**新增注釋,其他地方不寫注釋,這就對變數和方法的命名風格提出了很高的要求,乙個合理的命名風格可以讓讀者閱讀遠嗎就像閱讀注釋一樣,因此根本不需要為**額外寫注釋。
第十五章預習
public class yuxi15 else 字串的比較 字串1.equals 字串2 比較兩個字串的值是否相同,返回boolean型別的值.如果相同,則返回真值,否則返回假值.字串1.equalsignorecase 字串2 忽略大小寫比較字串1和字串2.如果都相同則返回真值 否則返回假值 改...
learn with python 第十五章 繼承
第十六章 繼承 16.1繼承 物件導向語言所擁有的特性是繼承,繼承指定義乙個新的類擁有原來類的方法。繼承最大的好處就是可以在不改變現存 的情況下新增新的方法,稱之為繼承是因為新定義的類擁有父類的所有方法。新建立的類知之為子類。繼承是乙個功能強大的特性,某些情況下如果沒有繼承,一些層序幾乎無法實現。同...
第十五章 磁碟管理
uuid 掛載點swap 產品型別swap 掛載選項預設值default 預設不檢測,檢測順序 0 0 檢視分割槽 swapon s s表示show 手動掛載 swapon dev sda3 缺點 重啟後就消失,想永久生效,寫配置檔案 解除安裝分割槽 swapoff dev sda3 vim etc...