日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > Android >内容正文

Android

【Android 电量优化】电量优化 ( 充电状态获取 | 主动获取充电状态 | 广播接受者监听充电状态 | 被动获取充电状态 | 注册空广播接受者获取历史广播 )

發(fā)布時間:2025/6/17 Android 20 豆豆

文章目錄

  • 一、獲取充電狀態(tài)
  • 二、被動獲取充電狀態(tài)
  • 三、主動獲取充電狀態(tài)



參考 Google 官方文檔 : 優(yōu)化電池續(xù)航時間





一、獲取充電狀態(tài)



在應(yīng)用中執(zhí)行某些操作 , 如軟件云端備份 , 從服務(wù)器端獲取最新版本號 , 從服務(wù)器端緩存最新軟件安裝包 , 固件版本 , 等操作 , 最好都在充電狀態(tài) , 那么如何獲取充電狀態(tài)呢 , 這里給出兩個方式 , 分別是主動獲取充電狀態(tài) , 被動獲取充電狀態(tài) ;





二、被動獲取充電狀態(tài)



1 . 被動獲取充電狀態(tài) :


① 監(jiān)聽方法 : 注冊廣播接受者 , 監(jiān)聽充電狀態(tài)變化 ;

② 場景描述 : 當(dāng)用戶插拔數(shù)據(jù)線時 , 充電狀態(tài)發(fā)生變化時 , 系統(tǒng)發(fā)出對應(yīng)的廣播 , 使用廣播接受者接收這些廣播 ;

③ 數(shù)據(jù)線插入廣播 : 當(dāng)數(shù)據(jù)線插入時 , 系統(tǒng)會發(fā)出 Intent.ACTION_POWER_CONNECTED 廣播 ;

④ 數(shù)據(jù)線拔出廣播 : 當(dāng)數(shù)據(jù)線拔出時 , 系統(tǒng)會發(fā)出 Intent.ACTION_POWER_DISCONNECTED 廣播 ;



2 . 廣播接受者代碼示例 :

package kim.hsl.bp;import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.text.TextUtils; import android.util.Log;/*** 被動獲取充電狀態(tài)* 充電狀態(tài)發(fā)生變化時 , 系統(tǒng)發(fā)出的廣播 , 使用廣播接受者接收這些廣播*/ public class BatteryReceiver extends BroadcastReceiver {public static final String TAG = "BatteryReceiver";@Overridepublic void onReceive(Context context, Intent intent) {// 獲取廣播事件String action = intent.getAction();if(TextUtils.equals(Intent.ACTION_POWER_CONNECTED, action)){// 數(shù)據(jù)線插入Log.i(TAG, "數(shù)據(jù)線插入");}else if(TextUtils.equals(Intent.ACTION_POWER_DISCONNECTED, action)){// 數(shù)據(jù)先拔出Log.i(TAG, "數(shù)據(jù)線拔出");}} }

3 . AndroidManifest.xml 注冊廣播接受者代碼示例 :

<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android"package="kim.hsl.bp"><uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /><applicationandroid:allowBackup="true"android:icon="@mipmap/ic_launcher"android:label="@string/app_name"android:roundIcon="@mipmap/ic_launcher_round"android:supportsRtl="true"android:theme="@style/AppTheme"><activity android:name=".MainActivity"><intent-filter><action android:name="android.intent.action.MAIN" /><category android:name="android.intent.category.LAUNCHER" /></intent-filter></activity><receiver android:name=".BatteryReceiver" ><intent-filter><!-- 充電線插上 --><action android:name="android.intent.action.ACTION_POWER_CONNECTED" /><!-- 充電線拔出 --><action android:name="android.intent.action.ACTION_POWER_DISCONNECTED" /></intent-filter></receiver></application></manifest>



三、主動獲取充電狀態(tài)



1 . 主動獲取充電狀態(tài)流程 :


① 創(chuàng)建 IntentFilter : 創(chuàng)建 IntentFilter , 并為其設(shè)置 Intent.ACTION_BATTERY_CHANGED 意圖 ;

IntentFilter intentFilter = new IntentFilter(Intent.ACTION_BATTERY_CHANGED);

② 注冊廣播接受者 : 調(diào)用 Context 對象的 registerReceiver 方法 , 設(shè)置 BroadcastReceiver receiver 廣播接收者參數(shù)為空 , IntentFilter 就是上述創(chuàng)建的意圖過濾器 ;

Intent intent = context.registerReceiver(null, intentFilter);

③ 獲取充電狀態(tài) : 從注冊廣播返回的 Intent 意圖中獲取對應(yīng)的充電狀態(tài) ;

int batteryChargeState = intent.getIntExtra(BatteryManager.EXTRA_PLUGGED, -1);

④ 對比充電狀態(tài) : 將上述從 Intent.ACTION_BATTERY_CHANGED 匹配的意圖中獲取 BatteryManager.EXTRA_PLUGGED 對應(yīng)的值 , 與以下 333 個值進(jìn)行對比 , 如果一致 , 說明當(dāng)前是此種充電狀態(tài) ;

  • BatteryManager.BATTERY_PLUGGED_AC : 交流電充電 ;
  • BatteryManager.BATTERY_PLUGGED_USB : USB 接口充電 ;
  • BatteryManager.BATTERY_PLUGGED_WIRELESS : 無線充電 ;


2 . 廣播接受者注冊用法 :


① 注冊廣播接收者 : registerReceiver 方法主要作用是在主線程注冊一個廣播接收者 BroadcastReceiver 運行 ;

② 廣播接收者調(diào)用 : 當(dāng)注冊的 IntentFilter 中的 action 匹配到相應(yīng)的廣播時 , BroadcastReceiver 會被在主線程調(diào)用 ;

③ 歷史廣播保存 : 系統(tǒng)發(fā)送完畢的廣播 , 會被保存下來 , 在后續(xù)注冊時發(fā)送 ;

④ 廣播復(fù)用機制 : 一旦有廣播接收者注冊廣播 , 如果之前發(fā)送完畢的廣播與本次注冊的 IntentFilter 意圖的 Action 匹配 , 次函數(shù)就會返回一個 Intent , 這個 Intent 就是之前已經(jīng)發(fā)送的廣播 ;

⑤ 如 : 本次注冊的 IntentFilter 中包含 Intent.ACTION_BATTERY_CHANGED , 如果使用如下方法 context.registerReceiver(null, intentFilter) 注冊空廣播接收者 , 返回值就是之前發(fā)送過的 Intent.ACTION_BATTERY_CHANGED 廣播 , 可以從該廣播中獲取對應(yīng)的充電狀態(tài)變化數(shù)據(jù) ;

⑥ 注冊多個意圖 : 如果在 IntentFilter 中注冊多個意圖 , 廣播接收者如果不為空 , 則會處理每一個意圖 , 但是返回值只能返回一個意圖 , 返回哪個由系統(tǒng)決定 ;


廣播接收者注冊方法有兩種功能 , 一個是注冊廣播接收者 , 另一個是獲取之前已經(jīng)發(fā)送的相同 Action 的歷史廣播 ;

這里使用的注冊廣播接收者的獲取歷史廣播的功能 ;



3 . 代碼示例 :

package kim.hsl.bp;import android.content.Context; import android.content.Intent; import android.content.IntentFilter; import android.os.BatteryManager;public class BatteryUtils {/*** 主動獲取當(dāng)前電池是否在充電 , 即數(shù)據(jù)線是否插在手機上* @return*/public static boolean isBatteryCharging(Context context){boolean isBatteryCharging = false;// 主動發(fā)送包含是否正在充電狀態(tài)的廣播 , 該廣播會持續(xù)發(fā)送IntentFilter intentFilter = new IntentFilter(Intent.ACTION_BATTERY_CHANGED);// 注冊廣播接受者Intent intent = context.registerReceiver(null, intentFilter);// 獲取充電狀態(tài)int batteryChargeState = intent.getIntExtra(BatteryManager.EXTRA_PLUGGED, -1);// 判定是否是 AC 交流電充電boolean isAc = batteryChargeState == BatteryManager.BATTERY_PLUGGED_AC;// 判斷是否是 USB 充電boolean isUsb = batteryChargeState == BatteryManager.BATTERY_PLUGGED_USB;// 判斷是否是 無線充電boolean isWireless = batteryChargeState == BatteryManager.BATTERY_PLUGGED_WIRELESS;// 如何上述任意一種為 true , 說明當(dāng)前正在充電isBatteryCharging = isAc || isUsb || isWireless;return isBatteryCharging;}}

總結(jié)

以上是生活随笔為你收集整理的【Android 电量优化】电量优化 ( 充电状态获取 | 主动获取充电状态 | 广播接受者监听充电状态 | 被动获取充电状态 | 注册空广播接受者获取历史广播 )的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 成人小网站 | bt男人天堂 | jizzjizz免费 | 亚洲一二三区在线观看 | 久久天天躁狠狠躁夜夜躁2014 | 日本免费在线视频观看 | 亚洲视频在线播放免费 | 男人的天堂视频在线观看 | 91精产国品一二三 | 一级在线| 国产精品自在线 | 992tv在线成人免费观看 | 久操综合 | 精品乱子伦一区二区三区 | 另类图片亚洲色图 | 少妇高潮一区二区三区在线 | 日韩精品一区二区三区中文在线 | 日韩视频一区二区在线观看 | 精品女厕偷拍一区二区 | 国产精品久久AV无码 | 久久中文视频 | 日日射视频 | 在线成人影视 | 久久精品亚洲a | 午夜免费福利在线观看 | 日本免费不卡视频 | 大肉大捧一进一出好爽视频动漫 | 一二区在线视频 | 麻豆视频在线免费看 | 日韩精品视频播放 | 久草剧场| 亚洲av无码乱码国产精品 | 欧美性猛交xx乱大交 | 精品视频91 | 黄色网页大全 | 欧美色一区二区三区在线观看 | 色偷偷资源网 | av图片在线| 超碰97在线播放 | 亚洲爱爱爱 | 精品国产乱码一区二区三区99 | 亚洲AV成人无码久久精品巨臀 | 一区二区在线观看视频 | 呦呦视频在线观看 | 麻豆久久久久久久久久 | 午夜影院免费观看 | 天天操天天舔天天干 | 欧美日韩一区二区三区不卡 | 国语粗话呻吟对白对白 | 欧美另类tv | 日韩中文字幕二区 | www亚洲一区| 蜜臀人妻四季av一区二区不卡 | 91在线观看. | 午夜激情一区二区 | 亚洲av无一区二区三区久久 | av在线男人天堂 | 成人在线视频播放 | 亚洲精品天堂成人片av在线播放 | 精品国产无码在线观看 | 天天爱天天插 | 日本wwwwww| 国产综合视频一区二区 | 成人免费毛片嘿嘿连载 | 久久性精品 | 国产原创一区 | 国产精品一区二区三区不卡 | 亚洲黄色在线观看 | 91蝌蚪视频在线 | 日韩大尺度在线观看 | 啪视频在线观看 | 国模无码一区二区三区 | 女人叫床高潮娇喘声录音mp3 | 国产三级精品在线 | 爱乃なみ加勒比在线播放 | 天天综合天天做天天综合 | 精品国产无码一区二区 | 91网站免费| 国产精品天天av精麻传媒 | 高清av在线 | 亚洲另类色图 | 午夜青青草 | 亚洲福利在线观看 | 天天爽天天 | 亚洲精品国产成人av在线 | 日韩 国产 一区 | 日本做爰三级床戏 | 亚洲制服在线观看 | 嫩草视频91 | 日韩免费一级 | 一区二区久久精品66国产精品 | www.欧美.com| 日韩在线免费视频观看 | 欧美h网站 | 成人性生生活性生交全黄 | 亚洲欧美日韩精品永久在线 | 国产精品系列在线播放 | 三级a视频 | 女人黄色片 |