在這里小做一下總結(jié),同時也可以加深自己的印象
一衡怀、命名規(guī)則:
文件命名:
模塊+組件+作用棍矛;例如module_login_btn_register;
組件命名:
組件+模塊+作用抛杨;例如聲明一個Button btn+module_login_register;
小結(jié):看上去很清晰够委,但是我覺得還是根據(jù)自己習(xí)慣來定義比較好,畢竟后續(xù)還是自己維護怖现,因此書上也是給出推薦并沒有強制要求茁帽。
二玉罐、基本組件:
1,Activity傳值:
相信大部分的人都知道Intent傳值它是有數(shù)據(jù)的大小要求的潘拨,超過它傳遞的最大值時就會出現(xiàn)TransactionTooLargeException異常吊输,
因此當(dāng)數(shù)據(jù)量很大的時候最好是不要用Intent的傳值,可以用eventbus來代替铁追。
小結(jié):Intent具體最大值多少根據(jù)不同廠商的規(guī)格制定的季蚂,是沒有一個準(zhǔn)確值這么一說。
2琅束,生命周期以及Activity異常情況
http://www.reibang.com/p/9844eb905db1
小結(jié):這個連接已經(jīng)解釋的足夠詳細了扭屁,這里就不做小結(jié)了????????????
3,顯性和隱性需要注意的細節(jié)
在android中Intent分顯性和隱性涩禀,顯性只要在主清單文件聲明的話一般都不會有錯料滥,隱性的則需要通過resolveActivity函數(shù)來檢驗一下當(dāng)前activity是否存在,如不存在則會拋出ActivityNotFoundException異常
小結(jié):隱性跳轉(zhuǎn)則需要先檢測一下艾船,保證程序的健壯性葵腹。
4,Service和BroadcastReceiver做耗時操作時
可以用IntentService來做操作屿岂,可以有效的避免耗時操作時導(dǎo)致的ui不流暢
5践宴,不要在onDestroy釋放所有的資源,配合onstop或者onpause函數(shù)結(jié)合inFinish來判斷雁社;
總結(jié):因為有些耗時操作在onDestroy釋放的話可能比較晚浴井。配合使用更佳。
6霉撵,onpause不要做太多的耗時操作磺浙,因為跳轉(zhuǎn)到下一個activity的時是先調(diào)用當(dāng)前activity的onpause的方法。
總結(jié):如果做在onpause的方法做耗時操作會給用戶一種不流暢的感覺
7徒坡,不要在Appliction對象中做數(shù)據(jù)的緩存撕氧,會出現(xiàn)NullPointerException±辏可以使用一些持久化機制對數(shù)據(jù)進行緩存伦泥。
例如:假設(shè)當(dāng)前程序長期處于在后臺進程中時,很有可能Appliction會被重新創(chuàng)建锦溪,這個時候如果處理不當(dāng)?shù)脑挄霈F(xiàn)異常不脯。
8,使用toast時寫成一個單例的全局的toast刻诊。這樣可以避免重復(fù)被用戶點擊時一直彈出toast防楷,而不能取消的情況。
9则涯,在adapter中做判斷的時候一定要寫else這個反之條件复局,眾所周知item會出現(xiàn)復(fù)用的情況冲簿,如果不寫會出現(xiàn)顯示錯亂問題。
三亿昏、UI與布局 :
1峦剔,布局時很多時候都需要多個viewgroup嵌套時不要使用LinearLayout 嵌套,要使用RelativeLayout角钩,需求中RelativeLayout會比LinearLayout 更加的容易實現(xiàn)效果吝沫,但是如果
是簡單的布局的話還是需要用LinearLayout,因為在源碼中LinearLayout只是測量了一次彤断,而RelativeLayout測量了多次野舶,測量是需要cpu去做操作的,因此還得看個人的需求來實現(xiàn)宰衙。
總結(jié):不過現(xiàn)在完全可以用約束布局來實現(xiàn)啦。已經(jīng)完全可以不用考慮這些睹欲。
2供炼,幀動畫慎用
3,使用NestedScrollView去做RecyclerView的嵌套會避免很多問題窘疮;
比如:滑動沖突袋哼;而且性能會比ScrollView要強很多