奇技淫巧之-Android獲取系統(tǒng)充電狀態(tài)

掃盲:sticky broadcast是什么,有什么作用?

中文名:粘性廣播 又有人認為是一直不斷的發(fā)廣播,其實不是,想想也知道,一直不斷的發(fā)廣播這種**機制是Google工程師能想出來的機制么。

google官方的解釋是:

Perform a sendBroadcast(Intent) that is "sticky," meaning the Intent you are sending stays around after the broadcast is complete, so that others can quickly retrieve that data through the return value of registerReceiver(BroadcastReceiver, IntentFilter). In all other ways, this behaves the same assendBroadcast(Intent).
You must hold the BROADCAST_STICKY permission in order to use this API. If you do not hold that permission,SecurityException will be thrown.

大概的意思是說: 發(fā)出的廣播會一直滯留(等待),以便有人注冊這則廣播消息后能盡快的收到這條廣播。其他功能與sendBroadcast相同。但是使用sendStickyBroadcast 發(fā)送廣播需要獲得BROADCAST_STICKY permission,如果沒有這個permission則會拋出異常。

Android系統(tǒng)在發(fā)送完broadcast后才被注冊的broadcastreceiver無法接收到在注冊前發(fā)送的broadcast,但是可以接收到該receiver在注冊前發(fā)送的sticky broadcast.

那么此時我們就知道了,我們的充電狀態(tài)廣播不是一直發(fā)的,我們能放心的不做重復判斷了。(真的么?事實上還得做重復判斷,如果我們想給用戶帶來良好的體驗)

如何獲取充電狀態(tài)?

private BroadcastReceiver mbatteryReceiver=new BroadcastReceiver()
    {
        public void onReceive(Context context, Intent intent) 
        {
            String action =intent.getAction();
            if(Intent.ACTION_BATTERY_CHANGED.equals(action)) {
                int status=intent.getIntExtra("status",BatteryManager.BATTERY_STATUS_UNKNOWN);
                if(status==BatteryManager.BATTERY_STATUS_CHARGING){
                    Toast.makeText(getActivity(), "充電中!",Toast.LENGTH_SHORT).show();
                    }
                }
                else{
                    Toast.makeText(getActivity(), "未充電",Toast.LENGTH_SHORT).show();
                }
            }
        }
    };
mContext.registerReceiver(mbatteryReceiver, new IntentFilter(Intent.ACTION_BATTERY_CHANGED));
unregisterReceiver(mbatteryReceiver);

謝謝大家閱讀,如有幫助,來個喜歡或者關(guān)注吧!


本文作者:Anderson/Jerey_Jobs

簡書地址:[Anderson大碼渣][1]

github地址:[Jerey_Jobs][2]
[1]: http://www.itdecent.cn/users/016a5ba708a0/latest_articles
[2]: https://github.com/Jerey-Jobs

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關(guān)閱讀更多精彩內(nèi)容

  • Broadcasts Android apps can send or receive broadcast mes...
    woitaylor閱讀 6,742評論 0 12
  • 諸多無奈,最近在改一個項目的bug的時候,腦子老是一片空白,可能是最近腦子不夠用,總之,好多東西忘了,閱讀一些別人...
    狗子王1948閱讀 7,848評論 6 53
  • 1.廣播的分類 (1)按照發(fā)送的方式分類 標準廣播是一種異步的方式來進行傳播的,廣播發(fā)出去之后,所有的廣播接收者幾...
    曹豐斌閱讀 34,290評論 0 22
  • 前言 本來想寫一下廣播的,發(fā)現(xiàn)查閱后有整理的不錯的,只好轉(zhuǎn)載圖個簡便,日后好復習轉(zhuǎn)載:http://www.cnb...
    提升即效率閱讀 1,460評論 0 10
  • 出生在清江邊上,有山有水的好地方,98年的特大洪水,家鄉(xiāng)作為泄洪區(qū)需要搬遷,結(jié)果就到了長江邊,總是沒有離開水。 山...
    梧婷閱讀 717評論 0 0

友情鏈接更多精彩內(nèi)容