![]() |
---|
|
公司基本資料信息
|
剛學會安卓開發者,應該注意哪些事項?
作為一個有三、四年Android應用開發經驗的碼農,自然會遇到很多坑,下面是我能夠想起的一些坑(實踐證明不記筆記可不是個好習慣),后面有想到其它坑會陸續補上。
有些時候不能使用Application的Context,不然會報錯(比如啟動Activity,顯示Dialog等):
同一個應用的JNI代碼,不要輕易換NDK編譯的版本,否則會有很多問題(主要是一些方法實現不一樣,并且高版本對代碼的檢測更嚴格),比如r8沒有問題,但到r9就有問題了,這是個大坑;
Android的JNI代碼中,有返回類型的函數沒有返回值編譯的時候也不會報錯;
當前Activity的onPause方法執行結束后才會執行下一個Activity的onCreate方法,所以在onPause方法中不適合做耗時較長的工作,這會影響到頁面之間的跳轉效率;
謹慎使用Android的透明主題,透明主題會導致很多問題,比如:如果新的Activity采用了透明主題,那么當前Activity的onStop方法不會被調用;在設置為透明主題的Activity界面按Home鍵時,可能會導致刷屏不干凈的問題;進入主題為透明主題的界面會有明顯的延時感;
不要在非UI線程中初始化ViewStub,否則會返回null;
公共接口一定要考慮到代碼重入的情況,能設計為單例就盡量用單例;
不要通過Bundle傳遞大塊的數據,否則會報TransactionTooLargeException異常:java - Issue: Passing large data to second Activity**
盡量不要通過Application緩存數據,這不穩定:不要在Android的Application對象中緩存數據!**
盡量不要使用AnimationDrawable,它在初始化的時候就將所有圖片加載到內存中,特別占內存,并且還不能釋放,釋放之后下次進入再次加載時會報錯;
9圖不能通過tinypng壓縮,不然會有問題;
genymotion模擬器快是因為它是基于x86架構的,如果你的應用中用到了so,但沒有x86架構的so,只能放棄使用它;Android Studio的模擬器也一樣;
Eclipse的Android開發環境配置好后不要輕易升級ADT和build tools,不然會浪費你很多時間,還有就是一個workspace中的工程不要太多,不然每次啟動都會很慢;
Android studio每個版本、gradle每個版本差別都比較大(我是這樣認為的),對于jni代碼的編譯建議在Eclipse中進行,如果在Android studio中開發jni會浪費很多時間,主要是編譯腳本的配置比較麻煩;
Eclipse中的Lint太不靠譜,特別是主工程中依賴library的時候,很多提示都是有問題的,建議使用Android Studio的工程清理工具,特別推薦。
AsyncTask默認自己維護一個靜態的線程池,而該線程池只允許同時執行一個線程,也就是說,不管多少個AsyncTask,只要是調用execute()方法,都是共享這個默認進程池的,你的任務必須在之前的任務執行完以后,才能執行。
長沙極客營IT夢想學院是一個致力于高素質軟件開發人才培養的計算機教育基地,首創國內《極客Android課程》、《極客IOS課程》、《極客Java課程》、《前端工程師培訓》等專業教材,成為國內許多前沿IT企業的人才孵化基地,通過專業實訓徹底排除學員的后顧之憂,并解決用人企業難以招聘到合格人才的困擾。