如何提高Android用戶體驗


熱門鏈接:Android 4.1 Jelly Bean(果凍豆) 源碼下載 —— 115網盤/迅雷快傳

【eoeAndroid索引】史上最牛最全android開發知識匯總: http://www.eoeandroid.com/topic-tag.html?from=forum

出色的用戶體驗有三個特征:速度快、響應及時以及無縫。下面的信息幫助你的應用如何能夠在Android上實現這些特征。
一、速度快
  你不能假設手機與桌面系統和服務器一樣提速,更多的是你要關注你的代碼是否高效。
  編寫高效的Android代碼,應遵循兩個原則:
  不要做不必要的事
  不要分配不必要的內存
  以下是一些達到此目標的小技巧(有一些技巧是與oo的原則沖突,斟酌使用場景):

  1、避免建立對象
  例如,int數組比Integer數組好,同理,這適用於所有基本類型的組合

  2、使用本地方法
  不要吝惜使用String.indexOf(), String.lastIndexOf()等特殊實現的方法(specialty methods)。這些方法都是使用C/C++實現的

  3、使用實現類比接口好
  Map myMap1 = new HashMap();
  HashMap myMap2 = new HashMap();
  調用一個接口的引用會比調用實體類的引用多花費一倍的時間

  4、不用getter和setter
  應該直接訪問變量

  5、將成員變量緩存到本地
  for (int i = 0; i< this.mCount; i++)
  dumpItem(this.mItems);
  最好改成這樣:
  int count = this.mCount;
  Item[] items = this.mItems;
  for (int i = 0; i< count; i++) dumpItems(items);

  另外,永遠不要在for的第二個條件中調用任何方法

  6、給常量加上final
  static int intVal = 42;
  static String strVal = “Hello, world!”;
  編譯器會生成一個叫做的初始化類的方法,當類第一次被使用的時候這個方法會被執行。方法會將42賦給intVal,然后把一個指向類中常量表的引用賦給strVal。當以后要用到這些值的時候,會在成員變量表中查找到他們。
  static final int intVal = 42;
  static final String strVal = “Hello, world!”;
  現在,類不再需要方法,因為在成員變量初始化的時候,會將常量直接保存到類文件中。用到intVal的代碼被直接替換成42,而使用strVal的會指向一個字符串常量,而不是使用成員變量。

  7、謹慎使用foreach
  foreach可以用在實現了Iterable接口的集合類型上。foreach會給這些對象分配一個iterator,然后調用hasNext()和next()方法。你最好使用foreach處理ArrayList對象,但是對其他集合對象,foreach相當於使用 iterator

  8、避免使用枚舉
  枚舉變量非常方便,但不幸的是它會犧牲執行的速度和並大幅增加文件體積

public class Foo {
  private int mValue;
  public void run() {
      Inner in = new Inner();
      mValue = 27;
      in.stuff();
  }
  private class Inner {
      void stuff() {
      System.out.println(Foo.this.mValue);
      }
  }
}
Foo$Inner是一個完全獨立的類,它要直接訪問Foo的私有成員是非法的。編譯器會自動生成一個方法:
/*package*/ static int Foo.access$100(Foo foo) {
  return foo.mValue;
}


  內部類在每次訪問”mValue”方法時,都會調用這個靜態方法。同理,內部類要訪問私有方法也是如此。

10、避免使用浮點數
  嵌入式處理器通常沒有支持浮點運算的硬件,所有對”float”和”double”的運算都是通過軟件實現的
  通過將內部類訪問的變量和函數聲明由私有范圍改為包范圍,我們可以避免這個問題。這樣做可以讓代碼運行更快,並且避免產生額外的靜態方法。(遺憾的是,這些成員變量和方法可以被同一個包內的其他類直接訪問,這與經典的OO原則相違背。因此當你設計的時候應該謹慎使用這條優化原則)

二、響應及時
  1、將耗時工作交到子線程

  2、如果你的程序在后台處理用戶的輸入,給出一個你正在工作的提示(ProgressBar(進度條)和ProgressDialog(進度對話框)是很好的選擇)

  3、如果是游戲,把計算步驟放在子線程中

三、無縫
  1、不要丟失數據,繼承onPause()方法

  2、利用ContentProvider來共享數據

  3、不要打斷用戶,使用通知


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM