第十五章 Android效能優化

2021-07-26 10:33:50 字數 2245 閱讀 2254

(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特有的資料結構,比如sparsearraypair等,他們都具有更好的效能;

4. 適當食用軟引用和弱引用;

5. 採用記憶體快取和磁碟快取;

6. 盡量採用靜態內部類,這樣可以避免潛在的由於內部類而導致的記憶體洩露。

(9). mat是功能強大的記憶體分析工具,主要有histogramsdominator 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...