Android提高UI效能技巧

2021-09-09 02:32:47 字數 1284 閱讀 2018

提高ui效能的方法事實上有非常多在實際的開發中都已經用到了,在此做一下總結。

1.降低主線程的堵塞時間

若乙個操作的耗時較長(超過5秒),我們應該將其放入後台執行緒中執行。僅僅在須要改動ui介面時通知主線程進行改動。

android已經提供了asynctask以實現從主線程生成新的非同步任務的方法。

2.提高adapter&adapterview的效率

(1)重用已生成過的item view

(2)加入viewholder , 避免反覆查詢須要改動的控制項

public view getview(int position, view convertview, viewgroup parent)  else 

return convertview;}

static class viewholder

3.優化布局檔案,防止層級巢狀太深,最好不要多於5層

(1)使用觀察布局的工具: hierarchy viewer

(2)使用布局優化工具:layoutopt

4.優化activity背景圖

首先我們須知道,在android的activity中,不止有你使用setcontentview時使用的view,還包括了一些其它的view。

其根view是乙個decorview,你設定的view就被包括在當中,id為content,例如以下圖所看到的:

在預設情況下。decorview就包括了乙個預設的背景圖,我們將以此作為出發點。若我們須要在activity中設定乙個全屏的背景圖。不應該加入imageview或在layout中再設定背景圖。而應該呼叫setbackgrounddrawable()去改動decorview的背景圖。

在不須要使用背景圖時,我們應將背景圖清空

(1)**方式:

getwindow().setbackgrounddrawable()

(2)xml形式

//建立檔案res/values/theme.xml

//可依據須要將windowbackground設定為null或你須要的背景圖

5.使用viewstub

viewstub是乙個看不見的,輕量級的view。它沒有尺寸,也不會繪製以及以某種形式參與到布局中來。僅僅有當呼叫了inflate之後當中的view才會被例項化,這意味著用viewstub保留view層次的結構的代價是非常低的。

提高canvas效能技巧

錯誤 var canvas document.getelementbyid mycanvas var context this.canvas.getcontext 2d var drawasync eval jscex.compile async function drawasync start 正...

提高canvas效能技巧

參考文章 總結 1 少用drawimage,能將多張圖拼成一張,盡量多拼 2 drawimage的時候,用上全部引數,也就是用上sprite技術 3 只做少量的,必要的碰撞檢測 4 使用整型,少用浮點型 5 讓動畫基於時間,別基於幀,幀不可靠,基於時間可以更平滑 6 文字繪製的成本很高 7 使用預渲...

提高ListView效能的技巧

listview優化一直是乙個老生常談的問題,不管是面試還是平常的開發中,listview永遠不會被忽略掉,那麼這篇文章我們來看看如何最大化的優化listview的效能。不要在你的getview 中寫過多的邏輯 我們可以將這些 放在別的地方,例如 優化前的getview override publi...