Android優化之代碼優化

      本章節是對《Android優化技術詳解》一書中代碼優化的讀後總結,選取了其中常用的一些需要注意的優化細節。

    1.在字符串頻繁操作時,尤其是字符串拼接時多使用StringBuffer或者StringBuilder,第一個是線程安全的,第二個線程不安全,但是速度快一些。

    2.循環優化,一般的寫法是這樣

		List<String> list = getList();
		for (int i = 0; i < list.size(); i++) {
			
		}
    最好是將循環中的變量提取到左邊,比如這樣

		List<String> list = getList();
		for (int i = 0,p =list.size(); i < p; i++) {
			
		}
這樣list.size方法只用調用1次

   3.在try...catch中使用的變量如果不再使用,就在catch中置空,使其更快的回收

		Object object =null;
		try {
			object = new Object();
		} catch (Exception e) {
			object =null;
		}
   4.少用new創建對象,會調用所有的構造函數,如果一個對象實現了Cloneable接口,可以使用clone方法。

   5.乘法或者除法運算儘量使用位運算,能大幅提升運算速度。

   6.不修改的static變量,請用static final常量替代。

   7.如果返回了String類型,而且返回後的使用就是要加入到StringBuffer中,可以直接傳入StringBuffer。

   8.編譯器會將構造函數之外的初始化操作移動到構造函數中,所以儘量直接在構造函數中初始化。

   9.如果知道具體的大小,可以在創建StringBuffer,Vector等對象時設置一個大小,可以不用考慮因自增長所帶來的分配新的內存問題。

   10.避免使用枚舉,在編譯時會獨立生成一個很大的.class文件,會犧牲執行的速度以及增大文件體積。

   11.cursor查詢優化,一般的查詢語句是這樣寫的

		while(cursor.moveToNext()){
			String name = cursor.getString(cursor.getColumnIndex(People.NAME));
			String number= cursor.getString(cursor.getColumnIndex(People.NUMBER));
		}
 這樣的方式沒有錯誤,但是在數據量大的情況下會很慢,只需要一點點優化就可以提升很多

		int mName = cursor.getColumnIndex(People.NAME);
		int mNumber = cursor.getColumnIndex(People.NUMBER);
		while(cursor.moveToNext()){
			String name = cursor.getString(mName);
			String number= cursor.getString(mNumber);
		}
   12.Listview採用ViewHolder進行優化,新出的recycleview已經強制使用viewHolder了。

   13.在用戶的觸屏操作時,當用戶按下手指時,一般不僅會調用ACTION_DOWN,還會有ACTION_MOVE進行頻繁的調用,所以需要考慮action_move中的事件處理。

   14.surfaceview在繪製上可以採用髒矩形進行刷新,使幀數更高一些。

   15.恰當地使用緩存可以使用戶體驗更好,比如網絡請求數據可以在請求到數據後進行緩存,在下次加載時直接讀取緩存數據即可,分爲磁盤緩存,內存緩存,數據庫緩存。

   16.選用適合的數據結構也很重要,ArrayList和LinkedList,如果是查詢多選前面的,如果是插入刪除頻繁可以考慮後者。








發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章