Android 應用進行性能優化

函數執行時間較長
ui佈局嵌套過多,可以通過自定義view來加快,使用相對佈局代替線性佈局

導致內存泄漏的幾點問題:
1.靜態集合引用的對象無法被回收
2.監聽未關閉
3.數據庫、io、socket不關
4.單例
5.java內部類、匿名內部類子線程未執行完
故此請使用靜態內部類和弱引用

oom:OutOfMemoryException
1.使用arraymap、SparseArray代替hashmap
2.不在代碼中使用枚舉
3.減少bitmap的使用,使用時可以進行三級緩存、大圖片可以進局部分段加載、縮放

4.列表佈局的複用
5.不在ondraw裏new對象
6.stringbuild代替+
7.bitmap更換解碼方式

安卓在application或者第一個activty里加載繼承了thread.uncaughexceptionhander可以捕獲全局異常

ANR->Application Not Responding
activity5秒broadcastreceiver秒service1020秒intentservice120秒

安卓線程中有幾種通信方式:
內存共享變量,管道,handle機制runOnUiThread(Runnable) view.post(Runnable)

linux進程 dalvik進程
framework app
activitymanage.getmomeryclass獲取內存大小

framework提供了wms windowmanagerservice ams activitymanageservice bind機制
app在attach時framework給其提供一個window的子類phonewindow
oncreate中的setcontentview會創建decorview
decorview的addview方法將layou中佈局顯示出來

進程間用廣播、linux共享內存、bind機制(ipc》aidl)
aidl用bing機制模式來工作,Android interfach definition ;language

視圖動畫 animation 、屬性動畫、 幀動畫
overridePendingTransition可以修改安卓轉場動畫

surfaceview會有一個單獨的線程做ui的更新 支持opengl
textureview和普通的一樣 故此支持截屏旋轉等動作 需要硬件加速

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章