了解Android開發規範:性能及UI優化是什麼樣的?

2021-01-17 電子產品世界

本文帶您全面了解Android開發規範,其中包括Android編碼規範,Android性能優化和Android UI優化,讀完絕對不會後悔的好文章。

本文引用地址:http://www.eepw.com.cn/article/201808/385611.htm

一、Android編碼規範

1.java代碼中不出現中文,最多注釋中可以出現中文

2.局部變量命名、靜態成員變量命名

只能包含字母,單詞首字母出第一個外,都為大寫,其他字母都為小寫

3.常量命名

只能包含字母和_,字母全部大寫,單詞之間用_隔開

4.layout中的id命名

命名模式為:view縮寫_模塊名稱_view的邏輯名稱

view的縮寫詳情如下

LayoutView:lv

RelativeView:rv

TextView:tv

ImageView:iv

ImageButton:im

Button:btn

5.activity中的view變量命名

命名模式為:邏輯名稱+view縮寫

建議:如果layout文件很複雜,建議將layout分成多個模塊,每個模塊定義一個moduleViewHolder,其成員變量包含所屬view

6.strings.xml中的id命名

命名模式:activity名稱_功能模塊名稱_邏輯名稱/activity名稱_邏輯名稱/common_邏輯名稱

strings.xml中,使用activity名稱注釋,將文件內容區分開來

7.drawable中的圖片命名

命名模式:activity名稱_邏輯名稱/common_邏輯名稱

7.styles.xml:將layout中不斷重現的style提煉出通用的style通用組件,放到styles.xml中;

8.使用layer-list和selector

9.圖片儘量分拆成多個可重用的圖片

10.服務端可以實現的,就不要放在客戶端

11.引用第三方庫要慎重,避免應用大容量的第三方庫,導致客戶端包非常大

12.處理應用全局異常和錯誤,將錯誤以郵件的形式發送給服務端

13.圖片的.9處理

14.使用靜態變量方式實現界面間共享要慎重

15.Log(系統名稱 模塊名稱 接口名稱,詳細描述)

16.單元測試(邏輯測試、界面測試)

17.不要重用父類的handler,對應一個類的handler也不應該讓其子類用到,否則會導致message.what衝突

18.activity中在一個View.OnClickListener中處理所有的邏輯

19.strings.xml中使用%1$s實現字符串的通配

20.如果多個Activity中包含共同的UI處理,那麼可以提煉一個CommonActivity,把通用部分叫由它來處理,其他activity只要繼承它即可

21.使用button+activitgroup實現tab效果時,使用Button.setSelected(true),確保按鈕處於選擇狀態,並使activitygroup的當前activity與該button對應

22.如果所開發的為通用組件,為避免衝突,將drawable/layout/menu/values目錄下的文件名增加前綴

23.數據一定要效驗,例如

字符型轉數字型,如果轉換失敗一定要有預設值;

服務端響應數據是否有效判斷;

二、Android性能優化

1.http用gzip壓縮,設置連接超時時間和響應超時時間

http請求按照業務需求,分為是否可以緩存和不可緩存,那麼在無網絡的環境中,仍然通過緩存的httpresponse瀏覽部分數據,實現離線閱讀。

2.listview 性能優化

1).復用convertView

在getItemView中,判斷convertView是否為空,如果不為空,可復用。如果couvertview中的view需要添加listerner,代碼一定要在if(convertView==null){}之外。

2).異步加載圖片

item中如果包含有webimage,那麼最好異步加載

3).快速滑動時不顯示圖片

當快速滑動列表時(SCROLL_STATE_FLING),item中的圖片或獲取需要消耗資源的view,可以不顯示出來;而處於其他兩種狀態 (SCROLL_STATE_IDLE 和SCROLL_STATE_TOUCH_SCROLL),則將那些view顯示出來

3.使用線程池,分為核心線程池和普通線程池,下載圖片等耗時任務放置在普通線程池,避免耗時任務阻塞線程池後,導致所有異步任務都必須等待

4.異步任務,分為核心任務和普通任務,只有核心任務中出現的系統級錯誤才會報錯,異步任務的ui操作需要判斷原activity是否處於激活狀態

5.儘量避免static成員變量引用資源耗費過多的實例,比如Context

6.使用WeakReference代替強引用,弱引用可以讓您保持對對象的引用,同時允許GC在必要時釋放對象,回收內存。對於那些創建便宜但耗費大量內存的對象,即希望保持該對象,又要在應用程式需要時使用,同時希望GC必要時回收時,可以考慮使用弱引用。

7.超級大胖子Bitmap

及時的銷毀(Activity的onDestroy時,將bitmap回收)

設置一定的採樣率

巧妙的運用軟引用

drawable對應resid的資源,bitmap對應其他資源8.保證Cursor 佔用的內存被及時的釋放掉,而不是等待GC來處理。並且 Android明顯是傾向於編程者手動的將Cursor close掉

9.線程也是造成內存洩露的一個重要的源頭。線程產生內存洩露的主要原因在於線程生命周期的不可控

10.如果ImageView的圖片是來自網絡,進行異步加載

11.應用開發中自定義View的時候,交互部分,千萬不要寫成線程不斷刷新界面顯示,而是根據TouchListener事件主動觸發界面的更新

三、Android UI優化

1.layout組件化,儘量使用merge及include復用

2.使用styles,復用樣式定義

3.軟鍵盤的彈出控制,不要讓其覆蓋輸入框

4.數字、字母和漢字混排佔位問題:將數字和字母全形化。由於現在大多數情況下我們的輸入都是半角,所以 字母和數字的佔位無法確定,但是一旦全形化之後,數字、字母的佔位就和一個漢字的佔位相同了,這樣就可以避免由於佔位導致的排版問題。

5.英文文檔排版:textview自動換行時要保持單詞的完整性,解決方案是計算字符串長度,然後手動設定每一行顯示多少個字母並加上『n『

6.複雜布局使用RelativeLayout

7.自適應屏幕,使用dp替代pix

8.使用android:layout_weight或者TableLayout製作等分布局

9.使用animation-list製作動畫效果

相關焦點

  • 想學UI設計電腦配置需要什麼樣的
    本文由:「學設計上兔課網」原創,圖片素材來自網絡,僅供學習分享 想學UI設計電腦配置需要什麼樣的?這個問題很多同學私信過兔課菌,今天兔課菌就給大家分析一下。
  • ——淺談手遊開發性能優化
    手機性能比pc差很多,而且手機性能參差不齊,低端機佔有的比例又比較大,導致很多遊戲必須向低端機對齊,很苛刻的優化遊戲的性能。並且,手遊端的開發環境還有很多缺陷,例如對Vulkan/openGL ES的支持、訪問深度緩衝區,或者創建FrameBuffer等接口在低端機上經常直接不支持。
  • Magic UI 4.0基於Android 11開發作業系統
    Magic UI 4.0基於Android 11開發作業系統 梁桂海 發表於 2021-01-08 11:29:58 手機系統升級,一般能帶來更好的性能和新的功能,因此不少用戶期待自己使用的手機能獲得系統升級。
  • Android - android xml 層級專題及常見問題 - CSDN
    這裡有一些文件夾下的資源命名規範。你可以查看官方文檔來了解不同類型資源的一個完整 qualifier 列表。在這個目錄中保存響應的替代資源。這些資源文件必須與下面例子中展示的默認資源文件名一致,然而這些文件將確定的內容進行替代。例如:雖然圖片的文件名一樣,但是高解析度的屏幕,圖片的解析度也會高。下面是一個例子,指定默認屏幕的圖片和高解析度的替代圖片。
  • UI設計行業現狀怎麼樣?做UI設計要掌握什麼能力?好不好找工作?
    而國內ui設計的發展,卻很大程度依賴於移動網際網路的爆發,資本燒錢的年代,市場還是一片藍海,包括當時美團,滴滴,ofo等等,大家都在一個賽馬場,只要能跑得夠快(快速搶佔市場),就可以不計成本的投入,只要是個公司都在開發app。
  • 2020年5個最佳Vue移動端組件庫|UI框架
    >基於有贊統一的規範實現的 Vue 組件庫,提供了一整套 UI 基礎組件和業務組件。支持按需引入和後編譯,輕量靈活;擴展性強,可以方便地基於現有組件實現二次開發。標準規範:遵循統一的設計交互標準,高度還原設計效果。擴展性強:支持按需引入,輕量靈活;擴展性強,可以方便地實現二次開發。
  • 性能優化測試中的相關名詞
    當一個APP或遊戲各種功能越來越多時,性能優化的重要性就不言而喻了,況且現在APP或遊戲的功能逐漸趨同,提升用戶體驗已從產品設計本身轉到了APP或遊戲的流暢性上,這也讓越來越多的開發者更加關注性能優化與測試。
  • Java Web 服務性能優化實踐
    下面的任務就是開發 Web 服務了,手工編寫及發布符合規範的 Web 服務過程極為繁瑣,在此使用 IBM 的 Rational Software Architect(後面簡稱 RSA)來進行 Web 服務的伺服器端以及客戶端的開發。
  • RXThinkCMF_TP6 v1.0.1 旗艦版發布,優化UI組件庫 - OSCHINA...
    v1.0.1版本更新1、優化UI組件庫2、重構富文本編輯器組件;RXThinkCMF_TP6
  • 性能up!面向前端開發人員的14個JavaScript代碼優化技巧
    以下是一些小貼士,以供你更好地優化JavaScript代碼,展現更好的性能。順便一提,請確保共享和重用JS組件,以達成高質量代碼(需要時間來生成)和合理交付時間之間的恰當平衡。最好只在開發環境中保留這些額外的代碼,而不要將其用於生產環境,這樣就不會給客戶端的瀏覽器帶來無用代碼的負擔。不斷詢問自己某個功能、特性或代碼是否必要。可以手動或使用Uglify或google’s closurecompiler等工具移除不用的代碼,甚至可以用一種名為搖樹優化(tree shaking)的技術,從應用程式中移除不用的代碼。
  • Oculus v23開發套件:Oculus Unity支持OpenXR、優化定位延遲
    繼3D引擎Unreal和Unity宣布支持OpenXR規範後,Oculus在今天更新v23版開發者集成軟體包。據悉,本次更新分別針對Unity和Unreal引擎,包括為用於開發Quest和Quest 2應用的Unity集成軟體包加入實驗性OpenXR支持,以及新增降低定位延遲的新功能:Phase Sync。
  • android開發 自我優勢 - CSDN
    自我評價(案例一)本人性格開朗,積極向上,有較強的學習能力,具有較強的責任心,對編程有極大興趣和愛好,能夠獨立承擔APP開發工作,具有良好的編寫文檔習慣。對工作認真負責,容易和他人相處,形成融洽的團隊合作開發關係。處事冷靜,理智。善於與他人溝通交流,尤其是技術方面的知識,虛心請教他人,共同學習,共同進步。
  • Google I/O 2019 Android 應用原始碼現已發布
    更多內容,請閱讀《手勢導航: 實現邊到邊的全屏體驗》系列連載,或請前往 Github 查看團隊在 Google I/O 應用庫中提交的相關代碼,了解如何將應用內容擴展到屏幕邊緣。手勢導航: 返回上一級界面和主屏https://developer.android.google.cn/preview/features/gesturalnavhttps://medium.com/androiddevelopers/gesture-navigation-going-edge-to-edge-812f62e4e83ehttps://github.com
  • 《兒童推車性能評價規範》在滬發布
    對標全球最高標準《兒童推車性能評價規範》在滬發布本報訊 (記者霍一夫)在符合國標GB 14748-2006要求並獲得CCC認證的基礎上,化學安全方面,新增對19種可遷移元素、10種增塑劑、甲醛、偶氮的要求。這是近日在上海發布的《兒童推車性能評價規範》所要求的主要安全指標。
  • 私藏系列:你或許從未聽過的20個安卓開發工具
    BoosterBooster是一個非常有趣的工具,它容易使用、量級輕、強大且可擴展,是一種專為移動應用設計的質量優化工具包。其首要目標是解決隨應用複雜性增加而出現的質量問題,如性能、穩定性和安裝包大小。
  • 2020年 16 個很有用的 Vue UI庫
    儘管我對UIV的了解還不足以直接將其與前兩個庫進行比較,但需要注意一些關鍵事項。UIV使用Bootstrap CSS作為依賴項,從而使庫本身輕量級化,並且根據其文檔,它支持SSR(伺服器端渲染)。Mint UI (⭐️ 15.5k)網站: http://mint-ui.github.io/#!/zh-cngithub: https://github.com/ElemeFE/mint-ui/Mint UI 包含豐富的 CSS 和 JS 組件,能夠滿足日常的移動端開發需要。通過它,可以快速構建出風格統一的頁面,提升開發效率。
  • Android Studio 4.0 發布
    新的 Motion 編輯器MotionLayout API 擴展了ConstraintLayout豐富的功能,可以幫助 Android 開發管理應用的複雜運動和 widget 動畫,在 Android Studio 4.0 中,新的 Motion
  • uni-app小程序開發指南
    npm install -g @vue/cli複製代碼3.2 創建uni-app應用vue create -p dcloudio/uni-preset-vue wxapp複製代碼創建成功後修改manifest.json,配置已註冊的小程序appId3.3 uni-ui庫uni-ui是DCloud提供的基於vue組件,flex布局的跨端ui框架。
  • Android_中國經濟網——國家經濟門戶
    主要的更新如下:    1、拍攝/播放影片,並支持上傳到Youtube    2、支持立體聲藍牙耳機,同時改善自動配對性能    3、最新的採用WebKit技術的瀏覽器,支持複製/貼上和頁面中搜索    4、GPS性能大大提高    5、提供屏幕虛擬鍵盤