1、布局優化
(1)使用優先順序:LinearLayout,FrameLayout > RelativeLayout > 嵌套;
(2)使用onDraw()方法可能會頻繁使用,避免在這個方法中創建新的局部對象和執行耗時操作,
由于可能頻繁調用onDraw(),就會頻繁出發GC,降低效率。
2、內存泄漏
(1)在該釋放對象的時候釋放(動態注冊廣播、數據庫操作)
(2)靜態變量,生命周期從類加載到銷毀
(3)單例模式,生命周期和Application一樣
(4)屬性動畫,動畫無限循環執行,在onDestroy()是沒有停止,Activity和View相互持有,Activity無法釋放。
3、ANR
(1)主線程避免耗時操作,如有耗時操作,開子線程進行
4、ListView
(1)contentView復用View
(2)使用ViewHolder
(3)避免在getView()中有太多耗時操作或者創建局部對象,滑動較快時避免大量異步操作
5、線程優化
(1)開大量線程時使用線程池,線程池可以重復使用內部的線程,避免線程創建銷毀帶來的性能開銷
6、圖片相關
(1)使用弱引用、軟引用緩存。弱引用擁有更短暫的生命周期,一旦發現有弱引用的,就回收,不管內存足夠與否。軟引用只有當內存空間不足的時候才會回收。
(2)圖片壓縮
7、其它
(1)盡量創建局部變量,避免全局變量。
(2)for循環也要避免創建對象。