這個mobile開發,一般原生開發也許是最合適的方式,但是涉及到跨平臺的問題,有精力的團隊一般都會逐個基于移動操作系統進行開發。但是我追求短小,精悍,快速。于是我希望能夠跨平臺,基于html5開發是一個不錯的選擇,但是終究因為團隊更熟悉flex,于是決定采用flex mobile development來進入移動互聯的開發。
flex是個雙刃劍,我見過用的好的,做出來的效果不比原生差,也見過做的不好的,那效果,那性能真的不敢恭維,我的團隊一直在臺式機的flex app開發上,很少關于客戶端app的性能優化,于是寫此日志作為備忘,大部分都是網絡的共享觀點,不過經過我驗證后得以收納:
1、組件盡量使用為移動開發優化的,皮膚盡量使用簡潔的,一般最好通過graphic以及fxg語法來繪制,不要過多嵌入位圖。
2、itemRenderer最好用As3的,mobile theme里面有LabelItemRenderer以及IconItemRenderer,里面需要重載的方法有createChildren,measure,drawBackground,layoutContent以及數據的setter。相比Flex ItemRenderer,mobile的ItemRenderer的updateDisplayList分割成drawBackground和LayoutContent。IconItemRenderer使用flex ContentCache高速緩存下載下來的圖形圖像。
3、用styleableTextField,該類只可以在As3中使用,不能在mxml中使用,性能在mobile中比Label和RichText性能高不少。
4、讓flex ItemRender保持矩形形狀并且設置OpaqueBackground為一個單一顏色。
5、如果在flex ItemRenderer中繪制自己的背景,則需要將autoDrawBackground為false。
6、flex ItemRenderer如果外觀保持靜態,可以設置cacheAsBitmap為true。
7、flex ItemRenderer盡量少使用雙向綁定。
8、布局定位組件,盡量使用容器組件的layout屬性來達到布局目的,盡量少地嵌入容器組件,減少容器組件層次等。
9、優先考慮ConstraintLayout布局方式,減少動態布局。
10、使用Group和Graphics fxg來代替BorderContainer。
11、flex mobile中不要使用CreationComplete來初始化view的外觀,直接覆蓋data的setter方法,盡量避免使用雙向綁定以及綁定表達式。
12、建議在View的ViewActivate中調用遠程異步服務以及處理子組件的初始化等工作,避免用戶體驗中的”停頓“。
13、用IncludeIn或ExcludeFrom以state的方式隱藏或顯示組件。
14、如果一個View來回被用戶所切入,那么最好指定該View的destructionPolicy為never,即在內存中一直保留該view的實例。
15、使用BitmapImage代替Image進行圖像嵌入工作。
16、使用RectangularDropShadow代替DropShadowFilter
17、使用圖像的多個尺寸備份,而不是使用大圖+縮放或者圖形圓滑技術來適應不同分辨率和dpi。
18、盡量使用png圖形,而不是采用jpg或者gif.
19、對于簡單圖形,可以采用graphics或者rect fill等,對于復雜一點的圖形建議采用Adobe Illustrator來繪制fxg矢量圖形。
20、盡量使用css,利用mobile theme已有的皮膚,因為這些皮膚已經高度優化。
21、如果mobile theme的css樣式不足,則需要用as3來編寫皮膚或者擴展已有組件的皮膚。
posted on 2014-02-06 15:27
不做浮躁的人 閱讀(959)
評論(0) 編輯 收藏