• Android 开发笔记三 BroadcastReceiver 广播接收者


    发送端:

    发送的广播 里面在的内容也是一个 Intent对象

    可以 Activity ,Service 中发送广播 使用 sendBroadcast(intent) 方法.

    这里的 intent 需要设置一下 它的 Action标签,用来标识这个Intent. 只有接收者也是同样的标识时. 才会接收到这个Intent

    比如: intent.setAction("ztc.broadcast.action");

    你也可以在Intent里.添加一些信息 intent.putExtra("msg",myMessage);

    接收端: 

    需要先创建一个 继承自 BroadcastReceiver 的类并Override它的 OnReceive方法

     1 // 这个类就是我们的 广播接收者,它在这里的任务很简单只是用收到的字符串改成一个 TextView里面的内容而已
     2     // 它接收的是一个Intent的对象. Android里的数据传递一般都使用这个,不过在Notification中使用的是 PendingIntent类,
     3     // 其是也是一个Intent类封装, 表示这个意图是在之后的某个事件时才会发生,一般就是点击了Notification列表.来出发一些操作.
     4     class MyBroadcastReceiver extends BroadcastReceiver {
     5         @SuppressLint("NewApi")
     6         @Override
     7         public void onReceive(Context context, Intent intent) {
     8             // TODO Auto-generated method stub
     9             
    10             String rec = intent.getStringExtra("msg");
    11             
    12             Builder notiBuilder = new Notification.Builder(MainActivity.this);
    13             notiBuilder.setContentTitle("收到的值 : ");
    14             notiBuilder.setContentText("这里是主要内容  " + rec);
    15             // 必须设置这个 Icon  要不然 会被忽略掉的.
    16             notiBuilder.setSmallIcon(R.drawable.ic_launcher);
    17             noti = notiBuilder.build();
    18             //  发送消息
    19             notiManager.notify(1, noti);
    20             
    21             info.setText(rec);
    22         }
    23     }

    有了这个 Broadcast接收者类, 我们就需要在系统中将这个接收广播的接收者注册上, 这样系统才能将广播发给你, 但是系统中的广播很多. 你还需要设置一个IntentFilter 来告诉系统. "我只接收哪种广播" 

    1 // 创建一个 IntentFilter对象,来限制我们接收的Intent的Action的类型
    2 intentFilter = new IntentFilter("ztc.broadcast.action");

    有这 广播接收者类 及 广播过滤机 后我们就可以 注册了

    注册 : registerReceiver(myBroadcastReceiver,intentFilter);

    注销 : unregisterReceiver(myBroadcastReceiver);

    技巧:

      如果我们接收到的广播需要更新 Activity中的UI的话. 那么 最好把 注册广播放到 Activity的 OnResume() 方法中,这样在离开回来后. 可以重新接收广播,  而装 注销广播 放到 Activity中的 OnPause()方法中.这样在离开的时候 就不再接收广播了.

  • 相关阅读:
    HashMap了解吗?
    阻塞队列知道吗
    深入理解Java枚举类型(enum)
    CountDownLatch/CyclicBarrier/Semaphore 使用过吗?
    Java 种15种锁的介绍:公平锁,可重入锁,独享锁,互斥锁等等…
    选择排序算法
    Node版本管理器NVM常用命令
    希尔排序算法
    插入排序算法
    mybatis与hibernate的区别持久层对比【面试题】
  • 原文地址:https://www.cnblogs.com/easyfrog/p/2973275.html
Copyright © 2020-2023  润新知