1.发送广播:

    其实发送广播属于隐式意图

        1.1.系统发出的广播(有序广播/无序广播)

       1.2自己发出的广播(有序广播/无序广播)

2.订阅广播:

        2.1.AndroidManifest.xml形式订阅接收者

        2.2.Java代码订阅广播(onCreate方法中订阅接收者(能够发现广播接收者是唯一可以new的组件),onDestroy方法里解除订阅,如果不解除订阅会引发泄露异常)

3.广播的生命周期方法:就一个方法

           onReceive(Context context, Intent intent)

             广播接收者组件,什么时候被激活,当执行 onReceive(Context context, Intent intent) 的时候被激活

           广播接收者组件,什么时候被回收,当执行完 onReceive(Context context, Intent intent) 后,系统会自动回收 

4.广播接收者,耗时操作

 onReceive(Context context, Intent intent) 方法不能执行耗时操作

  因为广播接收者是和Activity一样在主线程运行(Activity是五秒未响应就ANR异常,而广播接收者十秒未响应就ARN异常)

如果一定要在广播接收者里执行耗时操作,怎么办?

答:不能开启子线程,因为在执行完生命周期方法(onReceive(Context context, Intent intent) )后,系统会自动回收广播接收者,所以不能开子线程

  可以去开启一个服务-->服务再去开启主线程执行耗时操作 content.startService();   

5.广播接收者,去跳转Activity

AndroidManifest.xml 订阅 接收者

  1.     <!--
  2. 订阅(Xml形式订阅接收者)
  3. 订阅接收者:专门去跳转Activity
  4. -->
  5. <receiver android:name=".br.StartActivityBroadcastReceiver">
  6.  
  7. <intent-filter>
  8.  
  9. <action android:name="my_customo.start_action_action" />
  10.  
  11. <data android:scheme="startActivityScheme" />
  12.  
  13. </intent-filter>
  14.  
  15. </receiver>

接收者:

  1. package liudeli.croadcast1.br;
  2.  
  3. import android.content.BroadcastReceiver;
  4. import android.content.Context;
  5. import android.content.Intent;
  6.  
  7. import liudeli.croadcast1.MainActivity;
  8.  
  9. /**
  10. * 此接收者,专门用来跳转Activity
  11. */
  12. public class StartActivityBroadcastReceiver extends BroadcastReceiver {
  13.  
  14. @Override
  15. public void onReceive(Context context, Intent intent) {
  16. startActivity(context);
  17. }
  18.  
  19. /**
  20. * 启动另外一个Activity
  21. */
  22. private void startActivity(Context context) {
  23. Intent intent = new Intent(context, MainActivity.class);
  24. /**
  25. * 注意:⚠️ 在非Activity的地方 去启动Activity,必须加入以下标记
  26. * intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
  27. */
  28. intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
  29. context.startActivity(intent);
  30. }
  31. }

发送广播:

  1.   /**
  2. * 发送广播给 ---> 接收者
  3. */
  4. public void startActivity(View view) {
  5. /**
  6. * 订阅的信息:
  7. * <intent-filter>
  8. *
  9. * <action android:name="my_customo.start_action_action" />
  10. *
  11. * <data android:scheme="startActivityScheme" />
  12. *
  13. * </intent-filter>
  14. */
  15. /**
  16. * 发送广播原则,接收者怎么去订阅的,我就怎么去发送广播
  17. */
  18. Intent intent = new Intent();
  19. intent.setAction("my_customo.start_action_action");
  20. intent.setData(Uri.parse("startActivityScheme:我要激活另外一个Activity"));
  21. sendBroadcast(intent);
  22. }

效果:

         

Android-广播总结的更多相关文章

  1. Android随笔之——Android广播机制Broadcast详解

    在Android中,有一些操作完成以后,会发送广播,比如说发出一条短信,或打出一个电话,如果某个程序接收了这个广播,就会做相应的处理.这个广播跟我们传统意义中的电台广播有些相似之处.之所以叫做广播,就 ...

  2. Android广播机制的深入学习

    部分内容转载自http://www.cnblogs.com/lwbqqyumidi/p/4168017.html 1.Android广播机制概述 Android广播分为两个方面:广播发送者和广播接收者 ...

  3. Android总结篇系列:Android广播机制

    1.Android广播机制概述 Android广播分为两个方面:广播发送者和广播接收者,通常情况下,BroadcastReceiver指的就是广播接收者(广播接收器).广播作为Android组件间的通 ...

  4. Android广播机制概述

    1.Android广播机制概述 Android广播分为两个方面:广播发送者和广播接收者,通常情况下,BroadcastReceiver指的就是广播接收者(广播接收器).广播作为Android组件间的通 ...

  5. Android广播机制:Broadcast

    转载:Android总结篇系列:Android广播机制 1.Android广播机制概述 Android广播分为两个方面:广播发送者和广播接收者,通常情况下,BroadcastReceiver指的就是广 ...

  6. Android(java)学习笔记172:BroadcastReceiver之 Android广播机制

    Android广播机制 android系统中有各式各样的广播,各种广播在Android系统中运行,当"系统/应用"程序运行时便会向Android注册各种广播.Android接收到广 ...

  7. Android广播机制(转)

    1.Android广播机制概述 Android广播分为两个方面:广播发送者和广播接收者,通常情况下,BroadcastReceiver指的就是广播接收者(广播接收器).广播作为Android组件间的通 ...

  8. Android广播的发送与接收

    Android广播的发送与接收 效果图 广播发送 广播分为有序广播和无序广播 有序广播与无序广播的区别 无序广播:只要是广播接收者指定了接收的事件类型,就可以接收到发送出来的广播消息.不能修改消息. ...

  9. Android广播机制

    原文出处: Android总结篇系列:Android广播机制 1.Android广播机制概述 Android广播分为两个方面:广播发送者和广播接收者,通常情况下,BroadcastReceiver指的 ...

  10. 【Android】Android 广播大全

    [Android]Android 广播大全 String ADD_SHORTCUT_ACTION 动作:在系统中添加一个快捷方式. String ALL_APPS_ACTION 动作:列举所有可用的应 ...

随机推荐

  1. bs的过滤器功能例子

    第一步 #src链接要符合下面要求,这里返回是 false or true def valid_img(src): return src.endswith('jpg') and 'img.jandan ...

  2. java web 程序---内置对象application的log方法的使用

    application的主要方法里,有log方法,是日志文件里可以查看到信息的. 当老师写好代码后,他发现在tomact里的log目录下找不到信息,原因是:我们用myeclipse这个客户端软件,应该 ...

  3. HDU 1717 小数化分数2(最大公约数)

    小数化分数2 Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Subm ...

  4. Keras 入门

    “sample”“batch”“epoch” Sample:样本,比如:一张图像是一个样本,一段音频也是一个样本. Batch:批,含有N个样本的集合.每一个batch的样本都是独立的并行处理.在训练 ...

  5. 【转载】Python ConfigParser的使用

    1.基本的读取配置文件-read(filename) 直接读取ini文件内容-sections() 得到所有的section,并以列表的形式返回-options(section) 得到该section ...

  6. OpenFeign使用笔记

    是什么 Feign是一个声明式Web Service客户端.使用Feign能让编写Web Service客户端更加简单, 它的使用方法是定义一个接口,然后在上面添加注解,同时也支持JAX-RS标准的注 ...

  7. 20165233 学习基础和C语言基础调查

    学习基础与<做中学>阅读心得 读<做中学>有感 娄老师通过在学习工作中总结出的"做中学"的方式,将其运用到减肥.五笔训练.乒乓球训练以及英文单词背诵的过程中 ...

  8. urllib2模块的基本使用(四)

    urllib2库的基本使用 所谓网页抓取,就是把URL地址中指定的网络资源从网络流中读取出来,保存到本地. 在Python中有很多库可以用来抓取网页,我们先学习urllib2. urllib2 是 P ...

  9. 「小程序JAVA实战」小程序的举报功能开发(68)

    转自:https://idig8.com/2018/09/25/xiaochengxujavashizhanxiaochengxudeweixinapicaidancaozuo66-2/ 通过点击举报 ...

  10. Timer控件的使用限制和注意事项

    Timer的Interval 属性当编写 Timer 组件时,需要考虑 Interval 属性的几点限制:1. 如果应用程序或另一个应用程序对系统需求很大(如长循环.大量的计算或驱动程序.网络或端口访 ...