在這里小做一下總結,同時也可以加深自己的印象
一、命名規(guī)則:
文件命名:
模塊+組件+作用;例如module_login_btn_register;
組件命名:
組件+模塊+作用;例如聲明一個Button btn+module_login_register;
小結:看上去很清晰,但是我覺得還是根據自己習慣來定義比較好,畢竟后續(xù)還是自己維護,因此書上也是給出推薦并沒有強制要求。
二、基本組件:
1,Activity傳值:
相信大部分的人都知道Intent傳值它是有數據的大小要求的,超過它傳遞的最大值時就會出現TransactionTooLargeException異常,
因此當數據量很大的時候最好是不要用Intent的傳值,可以用eventbus來代替。
小結:Intent具體最大值多少根據不同廠商的規(guī)格制定的,是沒有一個準確值這么一說。
2,生命周期以及Activity異常情況
http://www.itdecent.cn/p/9844eb905db1
小結:這個連接已經解釋的足夠詳細了,這里就不做小結了????????????
3,顯性和隱性需要注意的細節(jié)
在android中Intent分顯性和隱性,顯性只要在主清單文件聲明的話一般都不會有錯,隱性的則需要通過resolveActivity函數來檢驗一下當前activity是否存在,如不存在則會拋出ActivityNotFoundException異常
小結:隱性跳轉則需要先檢測一下,保證程序的健壯性。
4,Service和BroadcastReceiver做耗時操作時
可以用IntentService來做操作,可以有效的避免耗時操作時導致的ui不流暢
5,不要在onDestroy釋放所有的資源,配合onstop或者onpause函數結合inFinish來判斷;
總結:因為有些耗時操作在onDestroy釋放的話可能比較晚。配合使用更佳。
6,onpause不要做太多的耗時操作,因為跳轉到下一個activity的時是先調用當前activity的onpause的方法。
總結:如果做在onpause的方法做耗時操作會給用戶一種不流暢的感覺
7,不要在Appliction對象中做數據的緩存,會出現NullPointerException??梢允褂靡恍┏志没瘷C制對數據進行緩存。
例如:假設當前程序長期處于在后臺進程中時,很有可能Appliction會被重新創(chuàng)建,這個時候如果處理不當的話會出現異常。
8,使用toast時寫成一個單例的全局的toast。這樣可以避免重復被用戶點擊時一直彈出toast,而不能取消的情況。
9,在adapter中做判斷的時候一定要寫else這個反之條件,眾所周知item會出現復用的情況,如果不寫會出現顯示錯亂問題。
三、UI與布局 :
1,布局時很多時候都需要多個viewgroup嵌套時不要使用LinearLayout 嵌套,要使用RelativeLayout,需求中RelativeLayout會比LinearLayout 更加的容易實現效果,但是如果
是簡單的布局的話還是需要用LinearLayout,因為在源碼中LinearLayout只是測量了一次,而RelativeLayout測量了多次,測量是需要cpu去做操作的,因此還得看個人的需求來實現。
總結:不過現在完全可以用約束布局來實現啦。已經完全可以不用考慮這些。
2,幀動畫慎用
3,使用NestedScrollView去做RecyclerView的嵌套會避免很多問題;
比如:滑動沖突;而且性能會比ScrollView要強很多