如何編寫高效的Android代碼,編寫Android代碼

來源:互聯網
上載者:User

如何編寫高效的Android代碼,編寫Android代碼

    時間是很寶貴的東西,在編寫Android代碼的時候儘可能的編寫出高效的Android代碼可以節省你很多的時間,讓你有時間去泡妞、去陪女朋友、去陪基友,去吃飯、去娛樂、去睡覺!畢竟,誰都不想整夜整夜的加班,然後還亂吼:時間都去哪了?!下面就整理了怎樣提高效率,編寫高效的Android代碼!看到這,偷笑了吧,表掩飾,我已看到!

    對於如何判斷一個系統的不合理,這裡有兩個基本的原則:

    一、不要做不必要做的事情。

    二、儘可能的節省記憶體的使用。

    下面是常用的幾點最佳化建議:

    1、儘可能避免建立對象(Object)

    因為對象的建立並不是沒有代價的,如果你在一個使用者介面的迴圈中分配一個對象,你不得不強制的進行記憶體回收,那麼就會使使用者體驗出現稍微“打嗝”的現象。

    當從原始的輸入資料中提取字串時,試著從原始字串返回一個子字串,而不是建立一份拷貝。

    2、使用自身方法(Use Native Methods)

    當處理字串的時候,不要猶豫,儘可能多的使用諸如String.indexOf()、String.lastIndexOf()這樣對象自身帶有的方法。因為這些方法使用C/C++來實現的,要比在一個java迴圈中做同樣的事情快10-100倍。

    3、使用Safe.ijiami去檢測下你碼完的代碼

    Android代碼碼完,開發完Android App,用Safe.ijiami可以檢測出代碼存在的漏洞,一分鐘完事,不耽誤你碼下一批代碼。最重要的是它還會根據你的漏洞提出解決方案,省去你去一個又一個代碼的扒拉!

    4、緩衝屬性調用Cache Field Lookups

    訪問對象屬性要比訪問本地變數慢得多。你不應該這樣寫你的代碼:

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]);

(我們直接使用“this”表明這些是它的成員變數)

    5、聲明Final常量

    我們可以看看下面一個類頂部的聲明:

static int intVal = 42;

static String strVal = “Hello, world!”;

    當一個類第一次使用時,編譯器會調用一個類初始化方法,這個方法將42存入變數intVal,並且為strVal在類檔案字串常量表中提取一個引用,當這些值在後面引用時,就會直接屬性調用。

    我們可以用關鍵字“final”來改進代碼:

static final int intVal = 42;

static final String strVal = “Hello, world!”;

    這個類將不會調用類初始化方法,因為這些常量直接寫入了類檔案靜態屬性初始化中,這個初始化直接由虛擬機器來處理。代碼訪問intVal將會使用Integer類型的42,訪問strVal將使用相對節省的“字串常量”來替代一個屬性調用。

    將一個類或者方法聲明為“final”並不會帶來任何的執行上的好處,它能夠進行一定的最佳化處理。例如,如果編譯器知道一個Get方法不能被子類重載,那麼它就把該函數設定成Inline。

    6、避免浮點類型的使用

    嵌入式的處理器通常並不支援浮點數的處理,因此所有的“float”和“double”操作都是通過軟體進行的,一些基本的浮點數的操作就需要花費毫秒級的時間。

    同理,即使是整數,一些晶片也只有乘法而沒有除法。在這些情況下,整數的除法和模數操作都是通過軟體實現。

    7、避免列舉類型Avoid Enums

    列舉類型非常好用,當考慮到尺寸和速度的時候,就會顯得代價很高,例如:

public class Foo {

   public enum Shrubbery { GROUND, CRAWLING, HANGING }

}

    這會轉變成為一個900位元組的class檔案(Foo$Shrubbery.class)。第一次使用時,類的初始化要在獨享上面調用方法去描述列舉的每一項,每一個對象都要有它自身的靜態空間,整個被儲存在一個數組裡面(一個叫做“$VALUE”的靜態數組)。那是一大堆的代碼和資料,而僅僅是為了三個整數值。

Shrubbery shrub = Shrubbery.GROUND;

    這會引起一個靜態屬性的調用,如果GROUND是一個靜態Final變數,編譯器會把它當做一個常數嵌套在代碼裡面。

 


eclipse 怎編寫安卓代碼

eclipse不支援可視化編程,也就是沒有可以拖動的button,label,menu等組件
如果你瞭解java的文法的話,java中的button的大小,位置等屬性都是需要自己定義的
而,你要想點擊button觸發事件要通過監聽器來實現,
監聽器可以監聽鍵盤、滑鼠等的操作,然後對其進行相應的事件處理
建議你多看看JAVA的Swing編程
 
eclipse 怎編寫安卓代碼

eclipse不支援可視化編程,也就是沒有可以拖動的button,label,menu等組件
如果你瞭解java的文法的話,java中的button的大小,位置等屬性都是需要自己定義的
而,你要想點擊button觸發事件要通過監聽器來實現,
監聽器可以監聽鍵盤、滑鼠等的操作,然後對其進行相應的事件處理
建議你多看看JAVA的Swing編程
 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.