蓮湖網(wǎng)站建模板:APP開發(fā)中性能如何優(yōu)化?

2023-02-22    分類: App開發(fā)

蓮湖網(wǎng)站建模板:APP開發(fā)中性能如何優(yōu)化?
隨著移動互聯(lián)網(wǎng)的普及,手機(jī)已成為日常工作和生活的標(biāo)準(zhǔn)。面對龐大的移動用戶流量,許多企業(yè)不僅開展PC端網(wǎng)站建設(shè),還建立移動網(wǎng)站,APP開發(fā),小程序開發(fā),創(chuàng)建全面的互聯(lián)網(wǎng)解決方案,實現(xiàn)品牌和渠道的快速溝通。今天,將向您介紹APP的一些性能優(yōu)化建議,以便移動用戶可以更順暢地使用APP,并且手機(jī)將占用更少的空間,這將改善移動用戶的用戶體驗。
1.合理使用itmap:使用Bitmap后,需要及時調(diào)用recycle()方法釋放Bitmap占用的內(nèi)存空間,而不是等待Android系統(tǒng)釋放。
代碼示例:
//首先判斷它是否已被回收
if(bitmap!= null!bitmap.isRecycled()){
Bitmap.recycle();
位圖= NULL;
}
的System.gc();
2.對常量使用靜態(tài)最終修飾符
static final int intVal = 42;
靜態(tài)最終字符串strVal =“Hello,world!”;
將方法或類聲明為final不會導(dǎo)致性能提升,但會幫助編譯器優(yōu)化代碼。例如,如果編譯器知道getter方法不會被重載,編譯器將內(nèi)聯(lián)調(diào)用它。
3.靜態(tài)方法而不是虛方法
如果您不需要訪問對象的字段,請將方法設(shè)置為靜態(tài),并且調(diào)用將加速15?o 20?這也是一種很好的做法,您可以從方法聲明中看到調(diào)用此方法方法不需要更新此對象的狀態(tài)。
4.減少不必要的全局變量
盡量避免靜態(tài)成員變量引用消耗太多實例的資源,例如Context,因為Context引用超出了自己蓮湖網(wǎng)站建模板 的生命周期,導(dǎo)致Context泄漏。因此,嘗試使用Context類型的Application。通過調(diào)用Context.getApplicationContext()或Activity.getApplication()可以輕松獲得Application對象。
5.避免創(chuàng)建不必要的對象:避免創(chuàng)建短暫的臨時對象。減少對象創(chuàng)建可減少垃圾收集并減少對用戶體驗的影響。
例如,當(dāng)您經(jīng)常操作字符串時,請使用StringBuffer而不是String。對于所有基本類型的所有組合:int數(shù)組優(yōu)于Integer數(shù)組,這也總結(jié)了兩個并行int數(shù)組比(int,int)對象數(shù)組執(zhí)行得更好的基本事實。避免使用浮點數(shù)。通常的經(jīng)驗法則是,在Android設(shè)備中,浮點數(shù)的速度是整數(shù)的兩倍。
7.使用實體模擬接口
假設(shè)您有一個HashMap對象,您可以將其聲明為HashMap或Map:
Map map1 = new HashMap();
HashMap map2 = new HashMap();
8.訪問成員變量比訪問局部變量要慢得多
For循環(huán):不要在for的第二個條件中調(diào)用任何方法
反例:for(int i = 0; i
正例:int count = this.mCount; int count = this.getCount();
For(int i = 0; i
}
9.資源類對蓮湖網(wǎng)站建模板象應(yīng)在不使用時及時關(guān)閉,以便及時回收緩存的數(shù)據(jù)。
例如,Cursor,F(xiàn)ile等需要最終關(guān)閉資源對象,以避免資源對象在異常情況下未發(fā)布的隱患。
10.注冊廣播接收器,注冊觀察員等需要在不使用時取消注冊。
例如:假設(shè)在Activity,偵聽系統(tǒng)的電話服務(wù)中,您可以在Activity中定義PhoneStateListener對象,并在TelephoneManager服務(wù)中注冊它。對于Activity對象,理論上,Activity對象將在Activity退出后釋放。但是,如果在釋放Activity對象時忘記取消先前注冊的PhoneStateListener對象,則GC不會回收活動。如果您繼續(xù)進(jìn)入和退出此活動,由于無法回收大量活動對象,最終會導(dǎo)致頻繁的GC情況甚至內(nèi)存不足。

11.有效利用系統(tǒng)自有資源,Android系統(tǒng)內(nèi)置了大量資源,如字符串,顏色定義,常見的Icon圖像,動畫樣式,以及簡單的布局,沒有特殊要求,資源可以直接在程序中引用。這不僅減少了內(nèi)存開銷,還減小了apk的大小。
12.查看重用,使用ViewHolder實現(xiàn)ConvertView重用,這基本上是對所有容器控件的處理,如ListView,GridView等。
13.當(dāng)使用最優(yōu)數(shù)據(jù)類型時,對象的數(shù)量相對較少,ArrayMap取代了使用HashMap,避免使用枚舉,枚舉變量非常方便,但遺憾的是它會犧牲執(zhí)行速度并大大增加文件尺寸。
14.圖像內(nèi)存優(yōu)化
在Android提供的各種位圖格式中,最高的是RGB_8888,它也是系統(tǒng)的默認(rèn)位圖格式。其他人減少了位圖通道,這可以減少內(nèi)存開銷,例如一些部分圖像,小屏幕移動電話或圖像質(zhì)量要求。對于不高的場景,您可以使用RGB_565或ARGB_4444等圖像格式。
圖像縮放:inSampleSize,inScaled,inDensity和inTargetDensity
位圖內(nèi)存重用:使用inBitmap可以與LruCache結(jié)合使用。
推薦的開源庫:picasso,Glide
15. Android網(wǎng)絡(luò)通訊框架Volley。
16.合理使用對象池和線程池。
17.用IntentService替換服務(wù)。
IntentService優(yōu)點:新開的線程;順序處理意圖;執(zhí)行后自動退出。
18.盡量不要將大容量庫用于一個或兩個功能。
19.好在不使用對象時顯式設(shè)置Null以減少GC開銷。
20.了解有關(guān)并使用類庫的更多信息。
一些例子
2.使用JIT的Nexus One上的自編碼循環(huán)的System.arraycopy方法快9倍。
3. android.text.format包下的Formatter類提供了IP地址轉(zhuǎn)換和文件大小轉(zhuǎn)換的方法。 DateFormat類提供各種時間轉(zhuǎn)換,是一種非常有效的方法。
4. TextUtils類,用于字符串處理Android為我們提供了一個簡單實用的TextUtils類,如果你處理相對簡單的內(nèi)容,不必考慮正則表達(dá)式,在android.text.TextUtils中嘗試這個類
5.高性能MemoryFile類主要用于I / O操作,主要與外部存儲相關(guān)的I / O操作有關(guān)。 MemoryFile將NAND或SD卡上的文件轉(zhuǎn)換為內(nèi)存以進(jìn)行修改處理。使用高速RAM代替ROM或SD卡,性能自然得到改善。對于Android手機(jī),功耗也會降低。這個類實現(xiàn)了很多函數(shù),直接從Object繼承,并直接在C下通過JNI執(zhí)行。
內(nèi)存優(yōu)化工具
推薦的內(nèi)存分析工具:適用于Android 蓮湖網(wǎng)站建模板Studio的內(nèi)存監(jiān)視器
推薦內(nèi)存泄漏分析工作:MAT for eclipse,Android Studio
內(nèi)存泄漏監(jiān)控工具:LeakCanary

當(dāng)前名稱:蓮湖網(wǎng)站建模板:APP開發(fā)中性能如何優(yōu)化?
當(dāng)前地址:http://www.bm7419.com/news19/238919.html

網(wǎng)站建設(shè)、網(wǎng)絡(luò)推廣公司-創(chuàng)新互聯(lián),是專注品牌與效果的網(wǎng)站制作,網(wǎng)絡(luò)營銷seo公司;服務(wù)項目有App開發(fā)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

網(wǎng)站托管運(yùn)營