zoukankan      html  css  js  c++  java
  • 广播机制与短信拦截器

          生活中的广播大家很熟悉,尤其是收音机的各种各样的广播。Android 中有各式各样的广播,各种广播在Android 系统中运行,当系统/应用程序运行时便会向 Android 注册各种广播,Android 接收到广播会便会判断哪种广播需要哪种事件,然后向不同需要事件的应用程序注册事件,不同的广播可能处理不同的事件也可能处理相同的广播事件,这时就需要Android 系统为我们做筛选。

    广播接收器

        如果你想接收到android中某一个广播,那么你得建立一个广播接收器,定义自己的接收器类  继承处抽象类BroadCastReceiver,并实现其onReceive()方法。

    onReceive()方法中你要写一些你要完成的事件。然后另一个重点就是注册这个广播接收器,注册方法有两种:

    a)  Manifest.xml文件中注册(自动注册)Manifest.xml文件中注册,一当注册上了就一直存在,与Actvity的生死无关 
    Activity中注册,当Activity退出时必须将此接受器解注册
      
    <receiver android:name=".类名">
    <intent-filter >
    <action android:name="符合过滤器当中事件的名称"/>
    </intent-filter>
    </receiver>
    b) java文件中硬编码注册 (动态注册)Activity中注册,当Activity退出时必须将此接受器解注册
     

    receiver
    = new L20_BR();
    IntentFilter filter
    = new IntentFilter("android.intent.action.L20_BR");
    this.registerReceiver(receiver, filter);
    Toast.makeText(this, "注册成功", 0).show();

    当然,有注册也有解注册
    if(receiver!=null) {
    unregisterReceiver(receiver);
    //System.out.println(receiver==null);
    receiver = null;
    Toast.makeText(
    this, "解注册成功", 0).show();
    }
    else {
    Toast.makeText(
    this, "未注册", 0).show();
    }
    这样一个接收器就写好了。
    BroadCastReceiver生命周期
    当点击按钮之后intent会到AndroidManifest.xml文件中找是不是有匹配的action,如果当接收器与发出的广播匹配上后就会调用接收器所在类,然后获得对象,再执行onReceive方法,当方法执行完成后此receiver对象就会被释放回收。当我们再次点击按钮的时候就会重新获得对象,这就是BroadcastReceiver的生命周期;
  • 相关阅读:
    AutoMapper使用
    C#网络编程
    ASP.NET MVC (Razor)开发
    React的React Native
    WCF搭建
    异步编程
    Async和Await进行异步编程
    C#开发中使用配置文件
    NET转Java
    net 开源组件
  • 原文地址:https://www.cnblogs.com/mayue/p/2182865.html
Copyright © 2011-2022 走看看