Android資源文件命名與使用

1伯襟、layout的命名方式:(盡量帶上模塊名)

Activity的layout以module_activity開頭
Fragment的layout以module_fragment開頭
Dialog的layout以module_dialog開頭
include的layout以module_include開頭
ListView的item layout以module_list_item開頭
RecyclerView的item layout以module_recycle_item開頭
GridView的item layout以module_grid_item開頭

2先较、資源文件的命名:

①drawable資源文件的命名:(以小寫單詞隘道,下劃線的方式命名),根據(jù)分辨率的不同,存放到不同的drawable的目錄下,建議只使用一套,例如drawable-xhdpi.
模塊名業(yè)務(wù)功能描述控件描述控件狀態(tài)限定詞
module_login_btn_pressed
②anim資源名稱以小寫單詞+下劃線的方式命名:模塊名
邏輯名稱[方向][序號]
module_fade_in module_fade_out
③color資源使用#AARRGGBB格式,模塊名
邏輯名稱_顏色
<color name="module_btn_bg_color">#33b5e5e5</color>
④id資源原則上用駝峰法命名,View組件的資源id需要以View的縮寫作為前綴,LinearLayout(ll),RelativeLayout(rl),ConstraintLayout(cl),ListView(lv),ScrollView(sv),TextView(tv),Button(btn),ImageView(iv),CheckBox(cb),RadioButton(rb),EditText(et),ProgressBar(progress_bar),DatePicker(date_picker)
⑤大分辨率(單位度超過1000)的大分辨率圖片建議統(tǒng)一放在xxhdpi目錄下管理,否則將導(dǎo)致占用內(nèi)存成倍數(shù)增加灌曙。

三救崔、Android基本組件(Activity,Service,BroadcastReceiver,ContentProvider,Fragment)

①Activity中的onSaveInstanceState()方法不是Activity的生命周期戈轿,其在典型的Activity的生命周期的方法中是不會被調(diào)用的,但是當Activity意外銷毀(切換屏幕的時候)决摧,調(diào)用onSaveInstanceState來保存UI的狀態(tài),只能用于保存臨時數(shù)據(jù)。持久化存儲應(yīng)該在Activity的onPause/onStop()中來實行掌桩。
②Activity間通過隱式Intent的跳轉(zhuǎn),在發(fā)出Intent之前必須通過resolveActivity檢查,避免找不到合適的調(diào)用組件边锁,造成ActivityNotFoundException.
③避免在Service的onStartCommand()/onBind()方法中執(zhí)行耗時的操作,可以改成在IntentService的handleIntent或者其他異步機制來完成拘鞋。
④總是適用顯示Intent啟動或者綁定Service,且不要為服務(wù)生命Intent Filter,保證應(yīng)用的安全性,如果確實使用隱式調(diào)用,則可為Service提供Intent Filter并從Intent中排除相應(yīng)的組件名稱砚蓬,但是必須搭配使用Intent的setPackage()方法設(shè)置Intent的指定包名,這樣可以充分消除目標服務(wù)的不確定性。
⑤當前Activity的onPause方法執(zhí)行結(jié)束后才會執(zhí)行下一個Activity的onCreate,所以在onPause方法中不適合做耗時較長的工作盆色,這樣會影響頁面之間的跳轉(zhuǎn)效率灰蛙。
⑥Activity或者Fragment中動態(tài)注冊BroadCastReceiver時,registerReceiver()和unregisterReceiver()要成對出現(xiàn),如果不成對出現(xiàn),則可能導(dǎo)致已經(jīng)注冊的receiver沒有在合適的時機注銷,導(dǎo)致內(nèi)存泄漏,占用內(nèi)存空間,加重SystemService負擔。

四隔躲、UI與布局:(measure,layout,draw)

①布局中不得使用ViewGroup多重嵌套,盡量不要使用LinearLayout嵌套,應(yīng)該改為RelativeLayout,可以有效降低嵌套數(shù),保持扁平的View結(jié)構(gòu)摩梧。
②在Activity中顯示對話框或彈出浮層時,盡量使用DialogFragment,而非Dialog/AlertDialog,這樣便于隨Activity生命周期管理對話框/彈出浮層的生命周期。
③文本大小使用單位sp,view使用單位dp,對于TextView,如果在文字大小確定的情況下,推薦使用wrap_content布局避免出現(xiàn)文字顯示不全的適配問題宣旱。
④不能在Activity沒有完全顯示PopupWindow和Dialog
⑤盡量不要使用AnimationDrawable,它在初始化的時候就將所有的圖片加載到內(nèi)存中仅父,特備占內(nèi)存,并且還不能釋放,釋放之后下次進入再次加載時會報錯浑吟。
⑥不能使用ScrollView包裹ListView/GridView/ExpandableListView,因為這樣會把ListView的所有的Item都加載到內(nèi)存中笙纤,要消耗巨大的內(nèi)存和cpu去繪制圖面。

五组力、進程省容、線程與消息通信:

①新建線程的時候,必須通過線程池提供(AsybcTask或者ThreadPoolExecutor或者其他形式自定義的線程池)燎字,不允許在應(yīng)用中自定義顯示創(chuàng)建線程腥椒。(使用線程池的好處是減少在創(chuàng)建和銷毀線程上所花的時間以及系統(tǒng)資源的開銷,解決資源不足的問題候衍。如果不適用線程池笼蛛,有可能造成系統(tǒng)創(chuàng)建大量同類線程而導(dǎo)致消耗完內(nèi)存或者"過度切換"的問題,另外創(chuàng)建匿名線程不便于后續(xù)的資源使用分析蛉鹿,對性能分析造成困擾滨砍。
②子線程中不能更新界面,更新界面必須在主線程中進行,網(wǎng)絡(luò)操作不能在主線程中調(diào)用。

六妖异、文件與數(shù)據(jù)庫
①任何時候不要硬編碼文件路徑惨好,Android應(yīng)用模塊提供內(nèi)部和外部存儲,分別用于存放應(yīng)用自身數(shù)據(jù)以及應(yīng)用產(chǎn)生的用戶數(shù)據(jù)。
②SharedPreference提交數(shù)據(jù)時随闺,盡量使用Editor.apply(),而非Editor.commit。一般來講蔓腐,僅當需要確定提交結(jié)果矩乐,并據(jù)此有后續(xù)操作的時候,才使用Editor.commit。(SharedPreference相關(guān)修改使用apply方法進行提交會先寫入內(nèi)存,然后再異步寫入磁盤散罕,commit方法是直接寫入磁盤,如果操作頻繁的話分歇,apply的性能會優(yōu)于commit.

七、Bitmap欧漱、Drawable與動畫

①加載大圖片或者一次性加載多張圖片的時候,應(yīng)該在異步線程中進行(繼承自AsyncTask,在doInBackground的方法中執(zhí)行圖片加載),因為圖片的加載涉及到IO的操作,以及CPU的密集操作,很可能引起卡頓职抡。
②使用完圖片時,應(yīng)該釋放內(nèi)存。(如:bitmap.recycle();)
③頁面退出或者暫停的情況下,及時清理動畫內(nèi)存資源误甚。(mImageView.clearAnimation())
④在動畫或者其他異步任務(wù)結(jié)束時,應(yīng)該考慮回調(diào)時刻的環(huán)境是否還支持業(yè)務(wù)處理,例如Activity的onStop()函數(shù)已經(jīng)執(zhí)行,且在該函數(shù)中主動釋放了資源,此時回調(diào)如果不做判斷就會產(chǎn)生空指針崩潰缚甩。
⑤盡量減少Bitmap(BitmapDrawable)的使用,盡量使用純色(ColorDrawable),漸變色(GradientDrawable),StateSelector(StateListDrawable)等與Shape結(jié)合的形式構(gòu)建繪圖。

八窑邦、安全:

①使用PendingIntent時,禁止使用空Intent,同時禁止使用隱式Intent,因為使用了空Intent會導(dǎo)致惡意用戶劫持修改Intent的內(nèi)容擅威。禁止使用一個空的Intent去構(gòu)造PendingIntent,構(gòu)造PendingIntent的Intent一定要設(shè)置ComponentName或者action.

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市冈钦,隨后出現(xiàn)的幾起案子郊丛,更是在濱河造成了極大的恐慌,老刑警劉巖瞧筛,帶你破解...
    沈念sama閱讀 211,743評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件厉熟,死亡現(xiàn)場離奇詭異,居然都是意外死亡较幌,警方通過查閱死者的電腦和手機揍瑟,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,296評論 3 385
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來绅络,“玉大人月培,你說我怎么就攤上這事《骷保” “怎么了杉畜?”我有些...
    開封第一講書人閱讀 157,285評論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長衷恭。 經(jīng)常有香客問我此叠,道長,這世上最難降的妖魔是什么随珠? 我笑而不...
    開封第一講書人閱讀 56,485評論 1 283
  • 正文 為了忘掉前任灭袁,我火速辦了婚禮,結(jié)果婚禮上窗看,老公的妹妹穿的比我還像新娘茸歧。我一直安慰自己,他們只是感情好显沈,可當我...
    茶點故事閱讀 65,581評論 6 386
  • 文/花漫 我一把揭開白布软瞎。 她就那樣靜靜地躺著逢唤,像睡著了一般。 火紅的嫁衣襯著肌膚如雪涤浇。 梳的紋絲不亂的頭發(fā)上鳖藕,一...
    開封第一講書人閱讀 49,821評論 1 290
  • 那天,我揣著相機與錄音只锭,去河邊找鬼著恩。 笑死,一個胖子當著我的面吹牛蜻展,可吹牛的內(nèi)容都是我干的喉誊。 我是一名探鬼主播,決...
    沈念sama閱讀 38,960評論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼铺呵,長吁一口氣:“原來是場噩夢啊……” “哼裹驰!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起片挂,我...
    開封第一講書人閱讀 37,719評論 0 266
  • 序言:老撾萬榮一對情侶失蹤幻林,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后音念,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體沪饺,經(jīng)...
    沈念sama閱讀 44,186評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,516評論 2 327
  • 正文 我和宋清朗相戀三年闷愤,在試婚紗的時候發(fā)現(xiàn)自己被綠了整葡。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,650評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡讥脐,死狀恐怖遭居,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情旬渠,我是刑警寧澤俱萍,帶...
    沈念sama閱讀 34,329評論 4 330
  • 正文 年R本政府宣布,位于F島的核電站告丢,受9級特大地震影響枪蘑,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜岖免,卻給世界環(huán)境...
    茶點故事閱讀 39,936評論 3 313
  • 文/蒙蒙 一岳颇、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧颅湘,春花似錦话侧、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,757評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽术羔。三九已至,卻和暖如春乙漓,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背释移。 一陣腳步聲響...
    開封第一講書人閱讀 31,991評論 1 266
  • 我被黑心中介騙來泰國打工叭披, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人玩讳。 一個月前我還...
    沈念sama閱讀 46,370評論 2 360
  • 正文 我出身青樓涩蜘,卻偏偏與公主長得像,于是被迫代替她去往敵國和親熏纯。 傳聞我的和親對象是個殘疾皇子同诫,可洞房花燭夜當晚...
    茶點故事閱讀 43,527評論 2 349

推薦閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 171,781評論 25 707
  • ¥開啟¥ 【iAPP實現(xiàn)進入界面執(zhí)行逐一顯】 〖2017-08-25 15:22:14〗 《//首先開一個線程,因...
    小菜c閱讀 6,366評論 0 17
  • 我有些出離憤怒了,真的秩贰,不是我不愛這個企業(yè)霹俺,實在他不給我愛的理由。 來這個公司已經(jīng)16年之久毒费,我想以我固有的對于公...
    記搏閱讀 238評論 0 2
  • 近時難得此清閑丙唧,自在從游自在眠。 伏枕無端思世事觅玻,便尋文曲上青天想际。 檢點言辭多反調(diào),非吾特立愛孤行溪厘。 只緣正氣昭然...
    李漢儀閱讀 233評論 0 5
  • 這是一個真實的故事胡本,一只來自新西蘭的羊兒告訴我的傳奇經(jīng)歷…… 1 我終于成功的越獄了,哈哈哈哈桩匪!太興奮了打瘪! 我...
    霞啊霞閱讀 318評論 13 8