Android效能優化之電量優化

2021-09-30 14:48:14 字數 1906 閱讀 2381

android應用開發中存在很多比較耗電的特性。例如網路,定位,感測器等,同時關於一些關鍵的api的正確使用也是有效降低應用耗電的手段,例如broadcastreceiver,alarmmanager,wakelock等。

為了減少應用的損耗的電量,在**實現中需要盡量避免無用操作**的執行。當應用退到後台,一切的介面重新整理都是沒有意義而且浪費記憶體和電量的,廣播接收器是乙個典型的例子。如果應用中存在乙個監聽網路狀態變化的廣播接收器並會執行一些動作,例如彈出toast提示使用者網路環境的切換,那麼當應用位於後台時,我們需要禁用掉這個提示功能,因為這時它不僅影響使用者使用其他應用而且孩子啊後台默默地消耗著裝置上本來就不多的電量,通常的做法是在介面onpause之後取消廣播接收器的監聽操作,同時根據具體業務需求選擇當應用位於後台時是否禁用廣播接收器,**如下:

/**

* 是否禁用廣播接收器

*/private void enablebroadcastreceiver(boolean isenabled,class<?> receiver) else

}

android 中的資料傳輸方式有很多種,常見的有:

無論哪種傳輸方式,為了更好地延長電池的使用時間,我們在使用過程中都需要重點關注兩件事情

android中常見的位置服務有兩種:gps定位和網路定位。gps定位服務需要access_fine_location許可權,網路定位服務需要access_coarse_location或者access_fine_location許可權。**中使用位置服務時,通常需要關注一下幾個方面。

private void disablelocaltionlistener (locationlistener listener) 

locationmanager.removeupdates(listener);

}

mintime:用來指定位置更新通知的最小時間間隔,單位是毫秒。

mindistance:用來指定位置更新通知的最小距離,單位是公尺。

gps定位:通過接受全球定位系統的衛星提供的經緯度座標資訊實現位置服務,精度是最高的,通常在10公尺以內。當然,gps定位在時間和電量的消耗上也是最高的。

網路定位:通過移動通訊的基站訊號差異來計算出手機所在的位置,精度比gps定位差很多,通常在幾百公尺範圍內。

被動定位:最省電的定位服務,如果應用使用被動定位服務,說明它想知道位置更新資訊但又不想主動請求獲取,也就是這個應用會等待手機中其他應用,服務或者系統元件發出定位請求,並和這些元件的***一起接收位置更新。

alarmmanager是android sdk提供的乙個喚醒api,它是系統級別的服務,可以在特定的時刻廣播乙個特定的intent,這個pendingintent可以用來啟動activity,service或broadcastreceive。例如後台上傳統計資訊,可以通過乙個alarmmanager來定時檢查是否滿足條件並上傳記錄。alarmmanager提供了三個常用的方法。

alarmmanager的喚醒操作也是比較耗電的,通常情況下需要保證兩次喚醒操作的時間間隔不要太短,在不需要使用喚醒功能的情況下盡早取消alarmmanager,否則應用會一直處於耗電狀態。

wakelock是為了保持裝置處於喚醒狀態的api,因為在某些情況下,即使使用者長時間不與裝置互動,仍然需要阻止裝置進入休眠狀態,從而保證良好的使用者體驗。wakelock的鎖型別又很多種,不同的鎖型別對cpu,螢幕和鍵盤的影響不相同,具體情況如下:

wakelock的使用很簡單,語句如下:

powermanager.wakelock wakelock = null;

// 獲取喚醒鎖

private void acquirewakelock() }}

// 釋放喚醒鎖

private void releasewakelock()

}

效能優化 電量優化

使用battery historian來監測電量的情況,battery historian時google的乙個開源專案 具體安裝過程參見 當出現下列畫面,說明已經開啟 其開啟成功以後,訪問網頁如下所示 說明 這裡使用的是一台國外的vps伺服器,原本是想在本地虛擬機器實驗的,一直連線超時,就換成了vp...

效能優化 電量優化

使用battery historian來監測電量的情況,battery historian時google的乙個開源專案 具體安裝過程參見 當出現下列畫面,說明已經開啟 其開啟成功以後,訪問網頁如下所示 說明 這裡使用的是一台國外的vps伺服器,原本是想在本地虛擬機器實驗的,一直連線超時,就換成了vp...

Android電量優化

目前先寫乙個low版本的 過兩天來個超詳細版本的電量優化 學習自電量1.合理用wake lock不讓螢幕鎖定 並合理釋放wake lock 2.電量充足或者充電中的狀態,進行某些操作,如上傳歌曲 處理 3.打包零散網路請求,因為無線訊號的電量消耗是很大的 4.預取 5.jobscheduler等到正...