Android-广播总结
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 订阅 接收者
<!--
订阅(Xml形式订阅接收者)
订阅接收者:专门去跳转Activity
-->
<receiver android:name=".br.StartActivityBroadcastReceiver"> <intent-filter> <action android:name="my_customo.start_action_action" /> <data android:scheme="startActivityScheme" /> </intent-filter> </receiver>
接收者:
package liudeli.croadcast1.br; import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent; import liudeli.croadcast1.MainActivity; /**
* 此接收者,专门用来跳转Activity
*/
public class StartActivityBroadcastReceiver extends BroadcastReceiver { @Override
public void onReceive(Context context, Intent intent) {
startActivity(context);
} /**
* 启动另外一个Activity
*/
private void startActivity(Context context) {
Intent intent = new Intent(context, MainActivity.class);
/**
* 注意:⚠️ 在非Activity的地方 去启动Activity,必须加入以下标记
* intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
*/
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(intent);
}
}
发送广播:
/**
* 发送广播给 ---> 接收者
*/
public void startActivity(View view) {
/**
* 订阅的信息:
* <intent-filter>
*
* <action android:name="my_customo.start_action_action" />
*
* <data android:scheme="startActivityScheme" />
*
* </intent-filter>
*/
/**
* 发送广播原则,接收者怎么去订阅的,我就怎么去发送广播
*/
Intent intent = new Intent();
intent.setAction("my_customo.start_action_action");
intent.setData(Uri.parse("startActivityScheme:我要激活另外一个Activity"));
sendBroadcast(intent);
}
效果:
Android-广播总结的更多相关文章
- Android随笔之——Android广播机制Broadcast详解
在Android中,有一些操作完成以后,会发送广播,比如说发出一条短信,或打出一个电话,如果某个程序接收了这个广播,就会做相应的处理.这个广播跟我们传统意义中的电台广播有些相似之处.之所以叫做广播,就 ...
- Android广播机制的深入学习
部分内容转载自http://www.cnblogs.com/lwbqqyumidi/p/4168017.html 1.Android广播机制概述 Android广播分为两个方面:广播发送者和广播接收者 ...
- Android总结篇系列:Android广播机制
1.Android广播机制概述 Android广播分为两个方面:广播发送者和广播接收者,通常情况下,BroadcastReceiver指的就是广播接收者(广播接收器).广播作为Android组件间的通 ...
- Android广播机制概述
1.Android广播机制概述 Android广播分为两个方面:广播发送者和广播接收者,通常情况下,BroadcastReceiver指的就是广播接收者(广播接收器).广播作为Android组件间的通 ...
- Android广播机制:Broadcast
转载:Android总结篇系列:Android广播机制 1.Android广播机制概述 Android广播分为两个方面:广播发送者和广播接收者,通常情况下,BroadcastReceiver指的就是广 ...
- Android(java)学习笔记172:BroadcastReceiver之 Android广播机制
Android广播机制 android系统中有各式各样的广播,各种广播在Android系统中运行,当"系统/应用"程序运行时便会向Android注册各种广播.Android接收到广 ...
- Android广播机制(转)
1.Android广播机制概述 Android广播分为两个方面:广播发送者和广播接收者,通常情况下,BroadcastReceiver指的就是广播接收者(广播接收器).广播作为Android组件间的通 ...
- Android广播的发送与接收
Android广播的发送与接收 效果图 广播发送 广播分为有序广播和无序广播 有序广播与无序广播的区别 无序广播:只要是广播接收者指定了接收的事件类型,就可以接收到发送出来的广播消息.不能修改消息. ...
- Android广播机制
原文出处: Android总结篇系列:Android广播机制 1.Android广播机制概述 Android广播分为两个方面:广播发送者和广播接收者,通常情况下,BroadcastReceiver指的 ...
- 【Android】Android 广播大全
[Android]Android 广播大全 String ADD_SHORTCUT_ACTION 动作:在系统中添加一个快捷方式. String ALL_APPS_ACTION 动作:列举所有可用的应 ...
随机推荐
- 峰Spring4学习(6)spring AOP的应用例子
一.AOP简介: 二.AOP实例: 三.使用的例子 需求:在student添加的前后,打印日志信息: 0)spring AOP需要引用的jar包: 1)StudentService.java接口: p ...
- Bootstrap-CL:略缩图
ylbtech-Bootstrap-CL:略缩图 1.返回顶部 1. Bootstrap 缩略图 本章将讲解 Bootstrap 缩略图.大多数站点都需要在网格中布局图像.视频.文本等.Bootstr ...
- ScheduledExecutorService 定时器用法
1,如果只是想简单的写个定时任务,比如10分钟跑一次,那么ScheduledExecutorService是比较方便的,下面举个简单的例子 import java.util.concurrent.Ex ...
- pythonNet08
线程通信 通信方法:多个线程共用进程空间,所以进程的全局变量对进程内线程均可见.线程往往使用全局变量进行通信 注意事项:线程间使用全局变量进行通信,全局变量为共享资源,往往需要同步互斥机制 线程的同步 ...
- Mysql 授权远程访问
1.表示从任何主机连接到mysql服务器 GRANT ALL PRIVILEGES ON *.* TO 'user'@'%' IDENTIFIED BY 'password' WITH GRANT O ...
- 管理Linux服务器的用户和组(续篇)
用户切换 新建用户 useradd命令的选项 设置用户口令 passwd命令的选项 chage命令 修改用户帐户 禁用和恢复用户帐户 禁用和恢复用户帐户- Passwd命令 禁用和恢复用户帐户-直接修 ...
- 接口自动化(六)--使用QQ邮箱发送邮件
接口测试执行完发送一个邮件,这里使用QQ邮箱发送,先要拿到QQ邮箱授权码,方法自行百度 # coding=utf-8 import smtplib from email.mime.text impor ...
- Java下LDAP操作的资料
话说LDAP真是个诡异的protocol(或者数据库,或者服务,whatever...),没有一个特别形象的spec.这里列出一些筛选出的还可以的文档,都是oracle的: https://docs. ...
- 跟我学算法- tensorflow 卷积神经网络训练验证码
使用captcha.image.Image 生成随机验证码,随机生成的验证码为0到9的数字,验证码有4位数字组成,这是一个自己生成验证码,自己不断训练的模型 使用三层卷积层,三层池化层,二层全连接层来 ...
- 100 道 Linux 笔试题
1. cron 后台常驻程序 (daemon) 用于: A. 负责文件在网络中的共享 B. 管理打印子系统C. 跟踪管理系统信息和错误 D. 管理系统日常任务的调度 2. 在大多数Linux发行版本中 ...