返回顶部
首页 > 资讯 > 移动开发 >Android 使用registerReceiver注册BroadcastReceiver案例详解
  • 254
分享到

Android 使用registerReceiver注册BroadcastReceiver案例详解

2024-04-02 19:04:59 254人浏览 泡泡鱼
摘要

android.context.ContextWrapper.registerReceiver public Intent reGISterReceiver (Broadcast

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状态监测
private LogTaskReceiver logTaskReceiver;

定义变量二


private static String MONITOR_LOG_SIZE_ACTION = "MONITOR_LOG_SIZE";        //日志文件监测action
private static String SWITCH_LOG_FILE_ACTION = "SWITCH_LOG_FILE_ACTION";    //切换日志文件action

定义变量三


private final int SDCARD_TYPE = 0;            //当前的日志记录类型为存储在SD卡下面
private final int MEMORY_TYPE = 1;            //当前的日志记录类型为存储在内存中
private int CURR_LOG_TYPE = SDCARD_TYPE;    //当前的日志记录类型

定义方法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



class SDStateMonitorReceiver extends BroadcastReceiver{
    public void onReceive(Context context, Intent intent) {
        
        if(Intent.ACTION_MEDIA_UNMOUNTED.equals(intent.getAction())){    //存储卡被卸载
            if(CURR_LOG_TYPE == SDCARD_TYPE){
                Log.d(TAG, "SDcar is UNMOUNTED");
                CURR_LOG_TYPE = MEMORY_TYPE;
                new LoGCollectorThread().start();
            }
        }else{                                                            //存储卡被挂载
            if(CURR_LOG_TYPE == MEMORY_TYPE){
                Log.d(TAG, "SDcar is MOUNTED");
                CURR_LOG_TYPE = SDCARD_TYPE;
                new LogCollectorThread().start();
                
            }
        }
    }
}

定义BroadcastReceiver子类LogTaskReceiver



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方法中调用register方法。

在onDestroy方法中执行语句


unregisterReceiver(sdStateReceiver);
unregisterReceiver(logTaskReceiver);

到此这篇关于Android 使用registerReceiver注册BroadcastReceiver案例详解的文章就介绍到这了,更多相关Android 使用registerReceiver注册BroadcastReceiver内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: Android 使用registerReceiver注册BroadcastReceiver案例详解

本文链接: https://lsjlt.com/news/133610.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Android 使用registerReceiver注册BroadcastReceiver案例详解
    android.context.ContextWrapper.registerReceiver public Intent registerReceiver (Broadcast...
    99+
    2024-04-02
  • 使用registerReceiver注册BroadcastReceiver
    您可以使用registerReceiver方法来注册BroadcastReceiver。以下是一个示例代码:```java// 创建...
    99+
    2023-09-12
    使用
  • BroadcastReceiver动态注册案例详解
    BroadcastReceiver动态注册案例演示,供大家参考,具体内容如下 此案例共介绍2种动态注册广播接收器,为自定义广播接收器和系统广播接收器。当点击发送按钮后,将会弹出收到自...
    99+
    2024-04-02
  • BroadcastReceiver静态注册案例详解
    BroadcastReceiver静态注册案例演示,供大家参考,具体内容如下 静态注册与动态注册的区别: 动态注册:广播接收器可以自由的控制注册与取消,具有很大的灵活性。但只有在应用...
    99+
    2024-04-02
  • Android提高之BroadcastReceiver实例详解
    前面几篇文章分别讨论了Activity和Service,本文就来讨论BroastcastReceiver,Broastcast是应用程序间通信的手段。BroastcastRec...
    99+
    2022-06-06
    Android
  • android之BroadcastReceiver应用详解
    今天我们来讲一下Android中BroadcastReceiver的相关知识。 BroadcastReceiver也就是“广播接收者”的意思,顾名思义,它就是用来接收来自系统...
    99+
    2022-06-06
    Android
  • 深入Android中BroadcastReceiver的两种注册方式(静态和动态)详解
    今天我们一起来探讨下安卓中BroadcastReceiver组件以及详细分析下它的两种注册方式。 BroadcastReceiver也就是“广播接收者”的意思,顾名思义,它就是...
    99+
    2022-06-06
    静态 动态 Android
  • Android GridLayout使用案例详解
    目录一、简介二、常用属性介绍三、平分问题四、小米计算器效果五、动态加载一、简介 GridLayout是Android4.0引入的网格布局,使用它可以减少布局嵌套。也算是常用,但一直没...
    99+
    2024-04-02
  • Android ActivityManager使用案例详解
    前言 Activity可以获取运行中的应用信息,可以获取到servcie,process,app,memory,Task信息等。 获取信息 ActivityManager....
    99+
    2024-04-02
  • Android Handler使用案例详解
    什么是Handler? Handler可以发送和处理消息对象或Runnable对象,这些消息对象和Runnable对象与一个线程相关联。每个Handler的实例都关联了一个线程和线程...
    99+
    2024-04-02
  • Android VelocityTracker使用案例详解
       VelocityTracker顾名思义即速度跟踪,在android中主要应用于touch even。VelocityTracker通过跟踪一连串事件实时计算...
    99+
    2024-04-02
  • Android LayoutParams使用案例详解
    LayoutParams是什么? LayoutParams主要保存了一个View的布局参数,因此可以使用LayoutParams来改变布局参数从而达到View位置的效果,一般在自定义...
    99+
    2024-04-02
  • Android Kotlin使用SQLite案例详解
    Kotlin使用SQLite 首先确定我们的目标,SQLite只是一种工具,我们需要掌握就是增删改查就可以,我们真正需要动脑的还是项目中的业务逻辑。我这篇文章写得比较适合新手,没用过...
    99+
    2024-04-02
  • Android ExpandableListView使用方法案例详解
    目录一、前言二、实现的功能三、具体代码1、主xml代码2、父布局xml代码3、子布局xml代码4、主activity代码5、adapter代码一、前言   “好记性不如烂笔...
    99+
    2024-04-02
  • Android TextView的TextWatcher使用案例详解
    TextWatcher是一个文本变化监听接口,定义了三个接口,分别是beforeTextChanged,onTextChanged,afterTextCahnged. TextWa...
    99+
    2024-04-02
  • Spring@ComponentScan注解使用案例详细讲解
    目录一、简单介绍二、注解说明1. @ComponentScans注解源码2. @ComponentScan注解源码3. ScopedProxyMode枚举类源码4. FilterTy...
    99+
    2023-03-10
    Spring @ComponentScan注解 Spring @ComponentScan Spring @ComponentScan扫描组件
  • JavaWeb:用户注册登录案例
    1.1 用户登录 1.1.1 需求分析 用户在登录页面输入用户名和密码,提交请求给LoginServlet在LoginServlet中接收请求和数据[用户名和密码]在LoginServlt中通过My...
    99+
    2023-09-26
    mybatis java mysql servlet maven
  • 【Java案例】用户登录注册
    案例介绍: 编写程序实现简单的用户登录注册功能。程序包含以下4个功能: (1)登录功能,用户输入正确的账号密码登录成功; (2)注册功能,输入用户名和密码进行注册; (3)查看功能,查看所有的用户名与密码; (4)退出功能,退出系统; 用户...
    99+
    2023-09-23
    java 开发语言
  • Android banner详解用法案例
    Android----banner使用详解 昨天10.31 ,斗破苍穹的三年之约终于出来了,自己也等了很久很久,敬师长,敬家人,敬朋友,敬每一个前行路上正在奋战的自己,星光不问赶路...
    99+
    2024-04-02
  • Android HandlerThread案例详解
    HandlerThread 顾名思义就是一种可以使用 Handler 的 Thread。日常开发中我们经常会通过创建一个 Thread 去执行任务,有多个任务就多创建几个线程实现,这...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作