安卓app開發原則及性能優化,個人理念

雖然是開發人員但是也對app設計開發UI等有自己的一定見解:

追求的理念;
apk包大小越小越好
app打開耗費資源少
UI圖不是越炫酷越好 還要考慮性能 及對app的影響
如 以前加了個功能 打開pdf 加了個控件 apk直接加大了6M(上一版本12M,增加50% 相當於一個app,對用戶什麼感覺 直接就不下載了)
一個提示可以解決的 就別整個彈框(開發寫出來就分分鐘的事),但是代碼量增加,代碼是一個字母一個字母,一個字節字節堆起來的,會讓apk無端端的增大,而不知道原因
着重點搞清楚:app這個是爲了什麼,功能還是UI還是效果 。爲了UI效果耗時耗力耗財 功能影響了

接口輪詢問題 浪費流量內存等
當頁面不可見時,停止輪詢訪問接口 onDetachedFromWindow
回頁面時 再重新開始輪詢訪問接口 onAttachedToWindow

主線程從sp中讀取數據(可以異步就異步)影響頁面加載和顯示 )Memory & Threading(內存和線程)
複雜的頁面用幾個自定義view合併,這樣頁面複雜性降低,可讀性加強
類中成員變量儘可能的少,多的話類的複雜程度就會變高

增加併發的線程數會導致內存消耗的增加,平衡好這兩者的關係是非常重要的
多線程也會引起併發問題,(如集合同時刪除和添加)用原子解決
第三方sdk的初始化時機選擇()
網絡初始化,

過度繪製必須注意是否會引起內存泄漏,如,在Activity內部定義的一個AsyncTask,它屬於一個內部類,該類本身和外面的Activity是有引用關係的,
如果Activity要銷燬的時候,AsyncTask還仍然在運行,這會導致Activity沒有辦法完全釋放,從而引發
內存泄漏。所以說,多線程是提升程序性能的有效手段之一,但是使用多線程卻需要十分謹慎小心,
如果不瞭解背後的執行機制以及使用的注意事項,很可能引起嚴重的問題。

內存泄漏 廣播和服務的註冊(不用的時候解綁,註銷掉) static的使用(不能讓其修飾集合或大對象,) 常用作修飾全局配置項、工具類方法、內部類
在activity的onDestory中handler.removeCallbacksAndMessages(null);取消所有的消息的處理 包括待處理的消息;二是聲明handler的內部類爲static。

listview中item的緩存處理

oom等 一般情況都是圖片處理不當

利用studio工具Monitor進行監控 對新建類方法等進行檢測

數據庫的使用
在查詢SQLite數據庫時,會返回一個Cursor,當查詢完畢後,及時關閉,這樣就可以把查詢的結果集及時給回收掉。

頁面背景和圖片加載
在佈局和代碼中設置背景和圖片的時候,如果是純色,儘量使用color;如果是規則圖形,儘量使用shape畫圖;
如果稍微複雜點,可以使用.9圖;如果不能使用9patch的情況下,針對幾種主流分辨率的機型進行切圖。

資源未關閉引起的內存泄露情況
比如:BroadCastReceiver、Cursor、Bitmap、IO流、自定義屬性attribute
attr.recycle()回收。
當不需要使用的時候,要記得及時釋放資源。否則就會內存泄露。

安卓推送 onepush

安卓百分比適配 PercentLayout

open CV 實現Android 的毛玻璃模糊效果

SpannableString打造絢麗多彩的文本顯示效果

1、代碼開發過程中注意事項
2、功能開發完成後性能檢查項

頁面控件的過度繪製,耗電量測檢測,流量的消耗(應該從用戶的角度去思考),如採用懶加載,版本更新(在wifi情況下下載更新)等

性能優化的幫助工具:

  1. MAT, Memory Monitor(屬於AndroidMonitor中一個模塊), HeapTool(查看堆信息),
    Allaction Tracking, LeakCanary Lint工具

  2. 無限循環動畫

    沒有在onDestroy中停止動畫,否則Activity就會變成泄露對象。
    比如:輪播圖效果。
    佈局的書寫,確保你的用戶界面渲染流暢的關鍵就是移除任何非必須的View以及減少你的View層級。視圖層級越深,花在測量視圖的時間就越長。
    找出項目裏面沒用的view呢?或者減少不必要的view嵌套(減少層級)
    圖片加載 注意事項: 質量,尺寸等壓縮 緩存處理

以上內容僅代表個人觀點

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章