日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > Android >内容正文

Android

开发Android应用 提升性能的小技巧

發(fā)布時間:2023/12/9 Android 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 开发Android应用 提升性能的小技巧 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

?

  前  言

?

  2015年,Android OS 目前在手機(jī)操作系統(tǒng)的市場占有率已達(dá)59%,權(quán)威機(jī)構(gòu)預(yù)計,Android市場占有率在2016年將達(dá)到63%,由于Android的開放性,未來占有率還將不斷增加,Android的NDK支持C/C++語言,這就增加了其在物聯(lián)網(wǎng)智能硬件領(lǐng)域的份額,按照這個趨勢,未來必然是Android一統(tǒng)天下;

  那如何才能開發(fā)出受歡迎的Android應(yīng)用呢??出色的用戶體驗有三個特征:速度快響應(yīng)及時、無縫。下面的文字可以幫助你在Android上實現(xiàn)這些特點;

?

  速度快

?

  你不能指望手機(jī)像桌面系統(tǒng)、服務(wù)器一樣提速,畢竟移動設(shè)備的體積和發(fā)熱有限制,所以更多的是要關(guān)注你的代碼是否高效。

  編寫高效的Android代碼,應(yīng)遵循兩個原則:

  1、不做不必要的事;

  2、不分配不必要的內(nèi)存;

  以下是一些達(dá)到此目標(biāo)的小技巧(有一些技巧是與OOP原則沖突的,請根據(jù)工程情況斟酌使用):

1、避免建立對象

  例如,int數(shù)組比Integer數(shù)組好,同理,這適用于所有基本類型的組合。

2、使用本地方法

  不要吝惜使用String.indexOf(),?String.lastIndexOf()等特殊實現(xiàn)的方法(specialty?methods)。這些方法都是使用C/C++實現(xiàn)的;

3、使用實現(xiàn)類比接口好

Map myMap1 = new HashMap(); HashMap myMap2 = new HashMap();

  調(diào)用一個接口的引用會比調(diào)用實體類的引用多花費一倍的時間;

4、不用getter和setter

  應(yīng)該直接訪問變量;

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

  另外,永遠(yuǎn)不要在for的第二個條件中調(diào)用任何方法

6、給常量加上final

  下面的代碼執(zhí)行時,編譯器會生成一個叫做的初始化類的方法,當(dāng)類第一次被使用的時候這個方法會被執(zhí)行。方法會將42賦給intVal,然后把一個指向類中常量表的引用賦給strVal。當(dāng)以后要用到這些值的時候,會在成員變量表中查找到他們。

static int intVal = 42; static String strVal = “Hello, world!”;

  把上面的代碼改成下面這樣:

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

  這樣寫,類不再需要方法,因為在成員變量初始化的時候,會將常量直接保存到類文件中。用到intVal的代碼被直接替換成42,而使用strVal的會指向一個字符串常量,而不是使用成員變量。

7、謹(jǐn)慎使用foreach

  foreach可以用在實現(xiàn)了Iterable接口的集合類型上。foreach會給這些對象分配一個iterator,然后調(diào)用hasNext()和next()方法。你最好使用foreach處理ArrayList對象,但是對其他集合對象,foreach相當(dāng)于使用?iterator

8、避免使用枚舉

  枚舉變量非常方便,但不幸的是它會犧牲執(zhí)行的速度,并大幅增加文件體積

9、將內(nèi)部類需要訪問的外部變量或方法 聲明在包的范圍內(nèi)

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的私有成員是非法的。編譯器會自動生成一個方法:

static int Foo.access$100(Foo foo) {return foo.mValue; }

  內(nèi)部類在每次訪問 mValue() 方法時,都會調(diào)用這個靜態(tài)方法。同理,內(nèi)部類要訪問私有方法也是如此。

10、避免使用浮點數(shù)

  嵌入式處理器通常沒有支持浮點運算的硬件,所有對 float、double 的運算都是通過軟件實現(xiàn)的;

  通過將內(nèi)部類訪問的變量和函數(shù)聲明由私有范圍改為包范圍,我們可以避免這個問題。這樣做可以讓代碼運行更快,并且避免產(chǎn)生額外的靜態(tài)方法。(遺憾的是,這些成員變量和方法可以被同一個包內(nèi)的其他類直接訪問,這與經(jīng)典的OOP原則相違背。因此當(dāng)你設(shè)計的時候應(yīng)該謹(jǐn)慎使用這條優(yōu)化原則)

?

  響 應(yīng) 及 時

?

1、將耗時工作交到子線程

2、如果你的程序在后臺默默的處理用戶輸入,請給出一個代碼正在工作的提示,例如:ProgressBar(進(jìn)度條) 和 ProgressDialog(進(jìn)度對話框) 都是響 應(yīng) 及 時?很好的選擇;

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

?

  無 縫

?

1、不要丟失數(shù)據(jù),繼承onPause()方法;

2、利用ContentProvider來共享數(shù)據(jù);

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

?

以上就是在開發(fā)過程中提高應(yīng)用性能的一些實用小技巧,歡迎補(bǔ)充,謝謝。

?

?

轉(zhuǎn)載于:https://www.cnblogs.com/jackchiang/p/4588955.html

總結(jié)

以上是生活随笔為你收集整理的开发Android应用 提升性能的小技巧的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。