編輯:高級開發
前段時間我們對幾個谷歌官方文檔進行了介紹,本文為提高android用戶體驗的三部曲,出色的用戶體驗有三個特征:速度快、響應及時以及無縫。下面的信息幫助你的應用如何能夠在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[i]);
最好改成這樣:
- int count = this.mCount;
- Item[] items = this.mItems;
- for (int i = 0; i< count; i++) dumpItems(items[i]);
另外,永遠不要在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、避免使用枚舉
枚舉變量非常方便,但不幸的是它會犧牲執行的速度和並大幅增加文件體積
9、將內部類需要訪問的外部變量或方法聲明在包范圍內
- 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原則相違背。因此當你設計的時候應該謹慎使用這條優化原則)
好了,這便是我們為大家准備的android用戶體驗三部曲的速度快篇,在以後的內容中我們會介紹做到及時響應和無縫。
我們向很多朋友介紹過android特有的虛擬機:Dalvik虛擬機工作原理介紹。android各個應用在運行時的進程管理和內存管理都是相對獨立的,android應用程序
下面介紹下有關android源代碼的內容和編程技巧,但是首先要讓大家了解下什麼是android操作系統,所謂的android系統:基於Linux平台的開源手機操作系統。
android智能手機上市等因素的影響下,全球移動上網用戶和使用量正快速增長。與此同時,android的移動網絡流量市場份額也是節節攀升,iPhone占全球移動網絡流量
Action bar及Dashboard能在大多數android程序項目中為用戶提供界面設計圖案。Dashboard項目組已經開始著手於一個項目,以幫助開發者們更快地使