提高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...