導航:首頁 > 操作系統 > 安卓性能優化方向怎麼樣

安卓性能優化方向怎麼樣

發布時間:2022-08-22 05:41:29

❶ 為什麼手機安卓系統優化不好

第一系統的架構層次決定的,
第二安卓是開源的,
第三安卓開源後優化廠家的能力參差不齊。
第一個問題,架構層次從下到上依次是
第一層:
Linux操作系統和驅動(Linux kernel):由C語言實現
第二層:本地框架和java運行環境(LIBRARIES 和android RUNTIME)
第三層:Android應用框架(ANDROIDFRAMEWORK)
第四層:Android應用程序(APPLICATIONS) 。
第二個問題。安卓開源,好處就是可以快速普及,拉攏大部分廠家。壞處就是碎片化嚴重。
第三個問題。一個版本出來後,大部分廠家都只是在第四層修改,少部分能夠在第三層修改,極少部分能夠在第一層修改。
最後重要的一點就是安卓的內存回收機制不一樣。安卓是每個程序都可以用一點。如果不夠用了,停止最先的程序,空出的內存給最新的用。ios的就是退出程序立馬回收內存。

❷ 在Android開發中,有哪些好的內存優化方式

可以考慮使用ArrayMap/SparseArray而不是HashMap等傳統數據結構。通常的HashMap的實現方式更加消耗內存,因為它需要一個額外的實例對象來記錄Mapping操作。另外,SparseArray更加高效,在於他們避免了對key與value的自動裝箱(autoboxing),並且避免了裝箱後的解箱。
2. 避免在Android裡面使用Enum
Android官方培訓課程提到過「Enums often require more than twice as much memory as static constants. You should strictly avoid using enums on Android.」,具體原理請參考《Android性能優化典範(三)》,所以請避免在Android裡面使用到枚舉。
3. 減小Bitmap對象的內存佔用
Bitmap是一個極容易消耗內存的大胖子,減小創建出來的Bitmap的內存佔用可謂是重中之重,,通常來說有以下2個措施:
inSampleSize:縮放比例,在把圖片載入內存之前,我們需要先計算出一個合適的縮放比例,避免不必要的大圖載入。
decode format:解碼格式,選擇ARGB_8888/RBG_565/ARGB_4444/ALPHA_8,存在很大差異
4.Bitmap對象的復用
縮小Bitmap的同時,也需要提高BitMap對象的復用率,避免頻繁創建BitMap對象,復用的方法有以下2個措施
LRUCache : 「最近最少使用演算法」在Android中有極其普遍的應用。ListView與GridView等顯示大量圖片的控制項里,就是使用LRU的機制來緩存處理好的Bitmap,把近期最少使用的數據從緩存中移除,保留使用最頻繁的數據,
inBitMap高級特性:利用inBitmap的高級特性提高Android系統在Bitmap分配與釋放執行效率。使用inBitmap屬性可以告知Bitmap解碼器去嘗試使用已經存在的內存區域,新解碼的Bitmap會嘗試去使用之前那張Bitmap在Heap中所佔據的pixel data內存區域,而不是去問內存重新申請一塊區域來存放Bitmap。利用這種特性,即使是上千張的圖片,也只會僅僅只需要佔用屏幕所能夠顯示的圖片數量的內存大小
4. 使用更小的圖片
在涉及給到資源圖片時,我們需要特別留意這張圖片是否存在可以壓縮的空間,是否可以使用更小的圖片。盡量使用更小的圖片不僅可以減少內存的使用,還能避免出現大量的InflationException。假設有一張很大的圖片被XML文件直接引用,很有可能在初始化視圖時會因為內存不足而發生InflationException,這個問題的根本原因其實是發生了OOM。

5.StringBuilder
在有些時候,代碼中會需要使用到大量的字元串拼接的操作,這種時候有必要考慮使用StringBuilder來替代頻繁的「+」。
6.避免在onDraw方法裡面執行對象的創建
類似onDraw等頻繁調用的方法,一定需要注意避免在這里做創建對象的操作,因為他會迅速增加內存的使用,而且很容易引起頻繁的gc,甚至是內存抖動。
7. 避免對象的內存泄露
類的靜態變數持有大數據對象
靜態變數長期維持到大數據對象的引用,阻止垃圾回收。
非靜態內部類存在靜態實例
非靜態內部類會維持一個到外部類實例的引用,如果非靜態內部類的實例是靜態的,就會間接長期維持著外部類的引用,阻止被回收掉。
資源對象未關閉
資源性對象比如(Cursor,File文件等)往往都用了一些緩沖,我們在不使用的時候,應該及時關閉它們, 以便它們的緩沖及時回收內存。它們的緩沖不僅存在於java虛擬機內,還存在於java虛擬機外。 如果我們僅僅是把它的引用設置為null,而不關閉它們,往往會造成內存泄露。
解決辦法: 比如SQLiteCursor(在析構函數finalize(),如果我們沒有關閉它,它自己會調close()關閉), 如果我們沒有關閉它,系統在回收它時也會關閉它,但是這樣的效率太低了。 因此對於資源性對象在不使用的時候,應該調用它的close()函數,將其關閉掉,然後才置為null. 在我們的程序退出時一定要確保我們的資源性對象已經關閉。 程序中經常會進行查詢資料庫的操作,但是經常會有使用完畢Cursor後沒有關閉的情況。如果我們的查詢結果集比較小, 對內存的消耗不容易被發現,只有在常時間大量操作的情況下才會復現內存問題,這樣就會給以後的測試和問題排查帶來困難和風險,記得try catch後,在finally方法中關閉連接
Handler內存泄漏
Handler作為內部類存在於Activity中,但是Handler生命周期與Activity生命周期往往並不是相同的,比如當Handler對象有Message在排隊,則無法釋放,進而導致本該釋放的Acitivity也沒有辦法進行回收。

❸ 目前來說 Android 有哪些值得研究的領域或者方向

性能優化,動畫相關,軟體架構完善,第三方控制項開發,內存優化,用戶體驗。這裡面的每個方向都夠研究很長時間的,還有如果覺得Android已經研究的夠透徹,可以研究下其他領域,比如IOS,跨平台,嵌入式都是目前比較火的。

❹ 現如今安卓手機的系統優化哪家好呢為什麼呢

由於手機行業的迅速發展,各大手機廠商對自己手機系統的優化也是越來越好,那麼在如今琳琅滿目的安卓市場,哪些手機廠商對手機系統的優化最好呢?

1、華為手機系統

作為我國手機的龍頭企業,華為手機可以說是在國內外都取得了非常好的口碑,特別是華為手機的操作系統,近期華為鴻蒙系統的發布可以說為華為的手機操作系統又上了一個台階,在之前安卓系統的版本上又進一步優化,帶給了用戶更好的體驗,華為在安卓手機的系統優化方面可以說是天花板的存在。

每家廠商都有自己優化的側重點,當然每家廠商也都有自己的特色,希望各大手機廠商在手機系統的優化上再多多下點功夫,能給我們安卓用戶帶來更多更好的體驗。

❺ 現如今安卓手機的系統優化哪家好呢你怎麼看

安卓手機有很多,這里所謂的安卓手機是指系統以谷歌公司的安卓系統為基礎進行自己優化的國產手機廠商生產的手機,因為在華為沒有正式推出自己的鴻蒙系統之前。國產的所有手機上,然後所使用的都是基於安卓系統進行的改良,所以哪個系統更好用,就看哪個廠商自己做的優化更加穩定一點。

之前魅族所做的系統也是還比較新穎的,在初代的魅族系統裡面,自己認為是國產的所有手機廠商裡面做的系統優化能排到前3的,甚至說第二也沒問題,因為要說第一肯定會有爭議,但後來廠商本身的手機銷量每日下降,在系統優化這方面就沒有下太大的功夫。導致現在的魅族的系統只能說中規中矩,挑不出來太大的毛病,但也不是那麼突出了。

❻ 安卓優化大師怎麼樣好不好用

首先,從用戶量來說,安卓優化大師擁有龐大的基礎用戶量,用戶的肯定顯然能從側面證明一下該款軟體的實力。而實際上,安卓優化大師作為一款手機系統優化軟體,在這方面的功能也確實非常強大。手機體檢、程序管理、開機加速、安裝卸載、進程管理、垃圾清理、文件管理、節電管理、快捷設置九大功能模塊,基本上包括了手機優化的多個方面,讓您在優化手機系統的時候更加全面,有效。

❼ 安卓APP性能優化都涉及哪些方面

以下優化都是在獲取到Root後進行的。 Build.prop (編輯/system/build.prop 文件(需要root, 可以用文件管理器或者其他root explorer),re管理器如果build.prop裡面有這些參數,只需要把數值更改。 1. 強制把Home程序駐入內存 ro.HOME_APP_ADJ=1 2.提高 JPG 質量為 100% ro.media.enc.jpeg.quality=100 3. VM 虛擬堆大小; 提高 RAM dalvik.vm.heap=48m 4. 使用 GPU 渲染UI debug.sf.hw=1 5. 減少撥號後出現的延時 ro.telephony.call_ring.delay=0 6.提高滑動響應 windowsmgr.max_events_per_sec=150 7.電池優化 wifi.supplicant_scan_interval=180 pm.sleep_mode=1 ro.ril.disable.power.collapse=0 8. 禁止調試通知圖標出現在狀態欄處 persist.adb.notify=0 9. 提高全局觸摸屏響應 debug.performance.tuning=1 video.accelerate.hw=1 10. 提高圖片和攝像質量 ro.media.dec.jpeg.memcap=8000000 ro.media.enc.hprof.vid.bps=8000000 11. (3G) 信號優化 ro.ril.hsxpa=2 ro.ril.gprsclass=10 ro.ril.hep=1 ro.ril.enable.dtm=1 ro.ril.hsdpa.category=10 ro.ril.enable.a53=1 ro.ril.enable.3g.prefix=1 ro.ril.htcmaskw1.bitmask=4294967295 ro.ril.htcmaskw1=14449 ro.ril.hsupa.category=5 12. 網路速度優化 net.tcp.buffer.default=4096,87380,256960,4096,16384,256960 net.tcp.buffer.wifi=4096,87380,256960,4096,16384,256960 net.tcp.buffer.umts=4096,87380,256960,4096,16384,256960 net.tcp.buffer.gprs=4096,87380,256960,4096,16384,256960 net.tcp.buffer.edge=4096,87380,256960,4096,16384,256960 13. 禁止撥號後出現黑屏 ro.lge.proximity.delay=25 mot.proximity.delay=25 14.修復應用程序出現問題 ro.kernel.android.checkjni=0 15.不通過按加/減音鍵喚醒手機 ro.config.hwfeature_wakeupkey=0 16.屏幕點亮時強制開啟功能鍵背光 ro.mot.buttonlight.timeout=0 17.不顯示開機動畫(system/media/bootanimation.zip動畫將不顯示,加速開機速度) debug.sf.nobootanimation=1 18.其他優化 ro.config.hw_menu_unlockscreen=false persist.sys.use_dithering=0 persist.sys.purgeable_assets=1 dalvik.vm.dexopt-flags=m=y ro.mot.eri.losalert.delay=1000

❽ 針對Android的性能優化集中哪些方面

一、概要:

本文主要以Android的渲染機制、UI優化、多線程的處理、緩存處理、電量優化以及代碼規范等幾方面來簡述Android的性能優化

二、渲染機制的優化:

大多數用戶感知到的卡頓等性能問題的最主要根源都是因為渲染性能。

Android系統每隔16ms發出VSYNC信號,觸發對UI進行渲染, 如果每次渲染都成功,這樣就能夠達到流暢的畫面所需要的60fps,為了能夠實現60fps,這意味著程序的大多數操作都必須在16ms內完成。

*關於JobScheler的更多知識可以參考http://hukai.me/android-training-course-in-chinese/background-jobs/scheling/index.html

七、代碼規范

1)for loop中不要聲明臨時變數,不到萬不得已不要在裡面寫try catch。

2)明白垃圾回收機制,避免頻繁GC,內存泄漏,OOM(有機會專門說)

3)合理使用數據類型,StringBuilder代替String,少用枚舉enum,少用父類聲明(List,Map)

4)如果你有頻繁的new線程,那最好通過線程池去execute它們,減少線程創建開銷。

5)你要知道單例的好處,並正確的使用它。

6)多用常量,少用顯式的"action_key",並維護一個常量類,別重復聲明這些常量。

7)如果可以,至少要弄懂設計模式中的策略模式,組合模式,裝飾模式,工廠模式,觀察者模式,這些能幫助你合理的解耦,即使需求頻繁變更,你也不用害怕牽一發而動全身。需求變更不可怕,可怕的是沒有在寫代碼之前做合理的設計。

8)View中設置緩存屬性.setDrawingCache為true.

9)cursor的使用。不過要注意管理好cursor,不要每次打開關閉cursor.因為打開關閉Cursor非常耗時。Cursor.require用於刷cursor.

10)採用SurfaceView在子線程刷新UI,避免手勢的處理和繪制在同一UI線程(普通View都這樣做)

11)採用JNI,將耗時間的處理放到c/c++層來處理

12)有些能用文件操作的,盡量採用文件操作,文件操作的速度比資料庫的操作要快10倍左右

13)懶載入和緩存機制。訪問網路的耗時操作啟動一個新線程來做,而不要再UI線程來做

14)如果方法用不到成員變數,可以把方法申明為static,性能會提高到15%到20%

15)避免使用getter/setter存取field,可以把field申明為public,直接訪問

16)私有內部類要訪問外部類的field或方法時,其成員變數不要用private,因為在編譯時會生成setter/getter,影響性能。可以把外部類的field或方法聲明為包訪問許可權

17)合理利用浮點數,浮點數比整型慢兩倍

18)針對ListView的性能優化,ListView的背景色與cacheColorHint設置相同顏色,可以提高滑動時的渲染性能。ListView中getView是性能是關鍵,這里要盡可能的優化。

getView方法中要重用view;getView方法中不能做復雜的邏輯計算,特別是資料庫操作,否則會嚴重影響滑動時的性能

19)不用new關鍵詞創建類的實例,用new關鍵詞創建類的實例時,構造函數鏈中的所有構造函數都會被自動調用。但如果一個對象實現了Cloneable介面,我們可以調用它的clone()方法。

clone()方法不會調用任何類構造函數。在使用設計模式(Design Pattern)的場合,如果用Factory模式創建對象,則改用clone()方法創建新的對象實例非常簡單。例如,下面是Factory模式的一個典型實現:

20)public static Credit getNewCredit() {
return new Credit();
}
改進後的代碼使用clone()方法,如下所示:
private static Credit BaseCredit = new Credit();
public static Credit getNewCredit() {
return (Credit) BaseCredit.clone();
}
上面的思路對於數組處理同樣很有用。

21)乘法和除法

考慮下面的代碼:

  • for (val = 0; val < 100000; val +=5) { alterX = val * 8; myResult = val * 2; }
    用移位操作替代乘法操作可以極大地提高性能。下面是修改後的代碼:
    for (val = 0; val < 100000; val += 5) { alterX = val << 3; myResult = val << 1; }

  • 22)ViewPager同時緩存page數最好為最小值3,如果過多,那麼第一次顯示時,ViewPager所初始化的pager就會很多,這樣pager累積渲染耗時就會增多,看起來就卡。

    23)每個pager應該只在顯示時才載入網路或資料庫(UserVisibleHint=true),最好不要預載入數據,以免造成浪費

    24)提高下載速度:要控制好同時下載的最大任務數,同時給InputStream再包一層緩沖流會更快(如BufferedInputStream)

    25)提供載入速度:讓服務端提供不同解析度的圖片才是最好的解決方案。還有合理使用內存緩存,使用開源的框架

    引用:Android性能優化的淺談

    ❾ 安卓手機性能差怎麼辦 優化方法都有哪些

    安卓手機優化可以藉助一些優化軟體來對手機進行優化,可以通過騰訊手機管家上面的手機優化功能來對手機進行優化,進入主頁面,點擊一鍵優化,就可以關閉後台運行程序,清理手機內存,和檢測開機自啟軟體等,優化手機的額性能。

    ❿ 如何對Android進行性能優化

    不知道你是說對系統優化還是什麼app優化,

    系統優化就只能找底層人員的了,我也不是很了解。

    app優化的話,大體有以下幾個方面

    1. ui優化,去除累贅的布局,優化初始化的速度,提高apk流暢性。

    2. 網路交互優化,好的網路和數據處理方式決定了app的體驗性能。

    3. 檢查內存是否有泄漏,人們常說的anr詳細。

    如何你問的是android手機優化。

    平常人只能下載手機管家這種軟體進行清除內存,垃圾,卸載無用的apk,保持android系統的流暢性。

    閱讀全文

    與安卓性能優化方向怎麼樣相關的資料

    熱點內容
    授時伺服器是做什麼的 瀏覽:596
    安卓手機如何知道去過哪些地方 瀏覽:592
    一個男人兩個女 在島上的片 瀏覽:109
    單片機中的或 瀏覽:605
    鬼片導演排名 瀏覽:984
    孿生兄妹的禁忌之戀電影 瀏覽:81
    大香蕉免費看電影 瀏覽:715
    盧秀藍r級片 瀏覽:413
    rs232單片機程序 瀏覽:217
    做解壓捏捏樂月餅 瀏覽:361
    阿里java編程題 瀏覽:83
    php代碼格式化工具 瀏覽:198
    捆綁類型電影 瀏覽:600
    發票軟體怎麼總連不上伺服器 瀏覽:354
    姐弟戀電影大尺度 瀏覽:159
    phpstudy安裝php擴展 瀏覽:777
    網路相關命令 瀏覽:802
    通達信挖坑選股公式源碼 瀏覽:747
    壓縮機用什麼模擬軟體 瀏覽:662
    王者榮耀蘋果和安卓戰力為什麼相差大 瀏覽:559