Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> Android開發中應該注意的事項

Android開發中應該注意的事項

編輯:關於Android編程

1、子線程中不能更新界面,更新界面必須在主線程中進行

2、Fragment注意的事項:

a) Activity調用Fragment中的方法

b) Thread或者Handler調用Fragment中的方法

需要注意getActivity()可能為空;需要加入下面代碼避免空指針

If(getActivity() == null || !isAdd()){

return;

}

3、String類型的常量和變量相互比較要使用常量equals變量,因為變量可能為空;

If(常量.equals(變量)){

...

}

4、Activity或者Fragment中的BroadCastReceiver設置監聽和取消監聽要成對出現。onReceive方法中調用外部類要判空

5、網絡操作不能在主線程中調用

6、Activity銷毀之前必須先銷毀附屬在Activity上的Dialog;不能出現Activity銷毀後,還操作Dialog對象的情況

7、使用數據庫的時候要注意到數據庫死鎖的問題。如果數據庫沒有做同步處理,必須在主線程中調用db,保證db不被lock

8、Try catch 不能使用log打印錯誤信息,避免出現空指針。使用e.printStackTrace()打印錯誤信息

9、打開的流資源一定要關閉,比如文件讀寫,數據庫讀寫

10、Static引用的Map或者List集合要手動釋放,盡量不要使用static引用集合

11、遍歷集合的時候不能對集合進行增刪。常出現在多線程中

12、一個方法不能過長,方法過長要拆分成幾個方法

13、判斷條件比較多的情況下,盡量使用衛語句取代嵌套條件表達式,例如:

If(!file.exist()){

return;

}

這樣可以避免層次太深,維護代碼時更關注主要邏輯,忽略非法情況

14、Do not keep long-lived references to a context-activity(a reference to an activity should have the same life cycle as the activity itself)

15、Try using the context-application instead of a context-activity

16、Avoid nonstatic inner classes in an activity if you don’t control their life cycle,use a static inner class and

make a weak reference to the activity inside.The solution to the issue is to use a static inner class with

a WeakReference to the outer class, as done in ViewRoot and its W inner class for instance.

(創建handler的時候要使用static內部類,否則會出現內存洩露)

17、Android UI 布局中文字使用sp單位,其它的使用dp單位,不能使用px單位

18、一個方法內層級太深,可以使用衛語句減少層級,可以抽出多個方法,減少代碼量

19、盡量少使用BroadcastReceiver,頻繁使用廣播會造成

a) 多對多調用

b) 傳遞參數很隨意不受控制

c) 像指針一樣,沒有堆棧信息,碰到問題不容易解決

d) 破壞了類的封裝性,違反了高內聚低耦合原則

20、能不使用Handler的情況下,盡量少使用Handler

a) 傳遞參數很隨意不受控制,維護成本高

b) 異步消息接到後,界面狀態需要判斷,可能界面已經銷毀

c) 使用了Handler,一定要控制一個類的范圍內,不能將Handler傳遞到其他類中去,因為這樣會破壞類的封裝性

d) 像指針一樣,沒有堆棧信息,碰到問題不容易解決。這條相對BroadcastReceiver容易,因為在一個類內,找起來相對容易

21、編程要遵循高內聚、低耦合原則。類和類之間要盡量降低耦合性,一個類盡量少的依賴其它類裡的屬性或者方法

22、圖片管理方法可以采用Universal-image-loader

23、Boolean型變量前綴使用has或者is

24、不能使用System.out.println打印log

25、變量命名不能1,2,3,4...後綴,要看名知意

26、If方法要有{}包裹

27、Log的tag不能是””

28、統一使用format和import格式開發

29、代碼中不能出現硬編碼(使用與配置分離,或者通過參數的方式,或者通過面向接口編程)

在Android開發中有時候代碼為了方便直接硬編碼,其實這是一種不好的習慣,在PC平台寫代碼可能直接使用的比較多。在移動平台上有時要考慮多國語言問題,Android設計了getString()方法從資源Res文件夾中讀取String字符串,這些字符串以xml形式保存在Values.xml文件中。Android平台在一定程度上更面向對象,除了Java本身,在構架上仍然使用MVC這樣的UI和代碼邏輯分離,UI可以專心的設計用戶界面,代碼可以通過類似Jar或MIDL文件來再發行應用,大大提高了代碼復用和維護性。

上面都是硬編碼的壞處,其實好處也是有的,從單獨語言和簡單程序來說具有運行效率高和設計簡單等方法,但是對於復雜的工程還是建議MVC方式設計比較合理。Android對於資源文件進行了緩存機制,在R類中進行全局注冊,也就是說findViewById之後會對這個xml文件做緩存,比如Layout或String。

30、不能在for循環中進行獨立的數據庫操作

31、不能使用ScrollView包裹ListView/GridView/ExpandableListVIew;因為這樣會把ListView的所有Item都加載到內存中,要消耗巨大的內存和cpu去繪制圖面

 

以上內容是基於過往開發經驗(自己和同事的)進行的總結,如有不妥之處還請指正,歡迎大家一起提出自己的想法,該篇博客我會持續更新...,希望大家共同進步!

 

 
  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved