Android 使用registerReceiver注冊BroadcastReceiver案例詳解
android.context.ContextWrapper.registerReceiver
public Intent registerReceiver (BroadcastReceiver receiver, IntentFilter filter)
Register a BroadcastReceiver to be run in the main activity thread. The receiver will be called with any broadcast Intent that matches filter, in the main application thread.
Parameters
receiver The BroadcastReceiver to handle the broadcast.
filter Selects the Intent broadcasts to be received.
Returns
The first sticky intent found that matches filter, or null if there are none.
定義變量一
private SDStateMonitorReceiver sdStateReceiver; //SDcard狀態(tài)監(jiān)測 private LogTaskReceiver logTaskReceiver;
定義變量二
private static String MONITOR_LOG_SIZE_ACTION = "MONITOR_LOG_SIZE"; //日志文件監(jiān)測action private static String SWITCH_LOG_FILE_ACTION = "SWITCH_LOG_FILE_ACTION"; //切換日志文件action
定義變量三
private final int SDCARD_TYPE = 0; //當(dāng)前的日志記錄類型為存儲(chǔ)在SD卡下面 private final int MEMORY_TYPE = 1; //當(dāng)前的日志記錄類型為存儲(chǔ)在內(nèi)存中 private int CURR_LOG_TYPE = SDCARD_TYPE; //當(dāng)前的日志記錄類型
定義方法register
private void register(){ IntentFilter sdCarMonitorFilter = new IntentFilter(); sdCarMonitorFilter.addAction(Intent.ACTION_MEDIA_MOUNTED); sdCarMonitorFilter.addAction(Intent.ACTION_MEDIA_UNMOUNTED); sdCarMonitorFilter.addDataScheme("file"); sdStateReceiver = new SDStateMonitorReceiver(); registerReceiver(sdStateReceiver, sdCarMonitorFilter); IntentFilter logTaskFilter = new IntentFilter(); logTaskFilter.addAction(MONITOR_LOG_SIZE_ACTION); logTaskFilter.addAction(SWITCH_LOG_FILE_ACTION); logTaskReceiver = new LogTaskReceiver(); registerReceiver(logTaskReceiver,logTaskFilter); }
定義BroadcastReceiver的子類SDStateMonitorReceiver
/** * 監(jiān)控SD卡狀態(tài) */ class SDStateMonitorReceiver extends BroadcastReceiver{ public void onReceive(Context context, Intent intent) { if(Intent.ACTION_MEDIA_UNMOUNTED.equals(intent.getAction())){ //存儲(chǔ)卡被卸載 if(CURR_LOG_TYPE == SDCARD_TYPE){ Log.d(TAG, "SDcar is UNMOUNTED"); CURR_LOG_TYPE = MEMORY_TYPE; new LogCollectorThread().start(); } }else{ //存儲(chǔ)卡被掛載 if(CURR_LOG_TYPE == MEMORY_TYPE){ Log.d(TAG, "SDcar is MOUNTED"); CURR_LOG_TYPE = SDCARD_TYPE; new LogCollectorThread().start(); } } } }
定義BroadcastReceiver子類LogTaskReceiver
/** * 日志任務(wù)接收 * 切換日志,監(jiān)控日志大小 */ class LogTaskReceiver extends BroadcastReceiver{ public void onReceive(Context context, Intent intent) { String action = intent.getAction(); if(SWITCH_LOG_FILE_ACTION.equals(action)){ new LogCollectorThread().start(); }else if(MONITOR_LOG_SIZE_ACTION.equals(action)){ checkLogSize(); } } }
在onCreate方法中調(diào)用register方法。
在onDestroy方法中執(zhí)行語句
unregisterReceiver(sdStateReceiver); unregisterReceiver(logTaskReceiver);
到此這篇關(guān)于Android 使用registerReceiver注冊BroadcastReceiver案例詳解的文章就介紹到這了,更多相關(guān)Android 使用registerReceiver注冊BroadcastReceiver內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Android listview數(shù)據(jù)顯示及提示信息的實(shí)例
這篇文章主要介紹了Android listview數(shù)據(jù)顯示及提示信息的實(shí)例的相關(guān)資料,需要的朋友可以參考下2017-05-05Android實(shí)現(xiàn)一周時(shí)間早中晚排班表
項(xiàng)目需求需要實(shí)現(xiàn)一個(gè)動(dòng)態(tài)添加,修改一周早中晚時(shí)間排班表,文章給大家提供了實(shí)現(xiàn)代碼,需要的朋友參考下吧2018-07-07Android App應(yīng)用啟動(dòng)分析與優(yōu)化
這篇文章主要針對Android App應(yīng)用啟動(dòng)的分析與優(yōu)化為大家進(jìn)行詳細(xì)介紹,感興趣的小伙伴們可以參考一下2016-07-07android現(xiàn)有項(xiàng)目輕微改動(dòng)適配平板心得
這篇文章主要介紹了android現(xiàn)有項(xiàng)目輕微改動(dòng)適配平板心得,對android適配感興趣的同學(xué)可以參考下2021-04-04Android Activity的4種啟動(dòng)模式圖文介紹
這篇文章主要給大家介紹了關(guān)于Android Activity的4種啟動(dòng)模式,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-11-11Kotlin 協(xié)程 supervisorScope {} 運(yùn)行崩潰解決方法
看過很多?supervisorScope {}?文檔的使用,我照抄一摸一樣的代碼,運(yùn)行就崩潰,最后找到了解決方法,應(yīng)該是kotlin版本更新做過改動(dòng),當(dāng)前我使用的是?androidx.core:core-ktx:1.9.0,本文給大家介紹Kotlin 協(xié)程 supervisorScope {} 運(yùn)行崩潰解決方法,感興趣的朋友一起看看吧2024-01-01Flutter實(shí)現(xiàn)自定義下拉選擇框的示例詳解
在一些列表頁面中,我們經(jīng)常會(huì)有上方篩選項(xiàng)的的需求,點(diǎn)擊出現(xiàn)一個(gè)下拉菜單,而在Flutter中,并沒有現(xiàn)成的這樣的組件,所以最好我們可以自己做一個(gè)。本文將利用Flutter實(shí)現(xiàn)自定義下拉選擇框,需要的可以參考一下2022-04-04android中Glide實(shí)現(xiàn)加載圖片保存至本地并加載回調(diào)監(jiān)聽
本篇文章主要介紹了android中Glide實(shí)現(xiàn)加載圖片保存至本地并加載回調(diào)監(jiān)聽,具有一定的參考價(jià)值,有興趣的可以了解一下2017-09-09