Android--广播发送者及广播接收者
来源:互联网 发布:武汉软件行业区域 编辑:程序博客网 时间:2024/06/06 04:01
一、广播具体运用举例:
1.开启电话监听,监听来电去电 ,例如 黑名单,归属地查询等
2.程序加锁 ,监听当前栈顶程序是否被加锁
3.实时定位 ,不断读取当前定位信息
4.锁屏事件 ,监听到锁屏后可以做一些清理工作
5.和桌面上的Widget通信
二、系统全局广播(跨运用)
1、广播接收者
广播接收者简单地说就是接收广播意图的Java类,此Java类继承BroadcastReceiver类。并重写:
onReceive(Context context,Intent intent) 方法,该方法是接收到广播后执行某些逻辑的方法。其中intent可以获得传递的数据,广播意图就是通过Context.sendBroadcast
(Intent intent)(同步)/Context.sendOrderedBroadcast(Intent intent)(有序)发送的意图。
备注:onReceive方法必须在10秒内完成,如果没有完成,则抛“Application No Response”当广播接收者onReceive方法需要执行很长时间时,最好将此耗时工作通过Intent发送给Service,由Service完成,并且不能使用子线程解决,因为BroadcastReceiver是接收到广播后才创建的,并且生命周期很短,因此子线程可能在没有执行完就已经被杀死了。
//广播接收者
public class MyBroadcastReceiver extends BroadcastReceiver{
public void onReceive(Context context, Intent intent){
Toast.makeText(context,"我接收了",Toast.LENGTH_SHORT).show();
}
}
//清单文件
<receiver
android:name="utils.MyBroadcastReceiver"//这是广播注册的名
android:enabled="true"
android:exported="true">
<intent-filter>
<action android:name="com.chinamobile.demo.file.My_BROADCAST"/>//这是给其中一个广播作表示,一一对应。
</intent-filter>
</receiver>
//广播发送者
Intent intent = new Intent("com.chinamobile.demo.file.My_BROADCAST");
sendBroadcast(intent);
2、广播发送者
通常广播发送方就是调用Context.sendBroadcast()的程序,通常广播发送方都是通过隐式意图,这样才能发送给多人。
同步广播:
发送方发出后,几乎同时到达多个广播接收者处,某个接收者不能接收到广播后进行一番处理后传给下一个接收者,并且无法终止广播继续传播;Context.sendBroadcast(intent)。
有序广播:
广播接收者需要提前设置优先级,优先级高的先接收到广播,优先级数值为-1000~1000,在AndroidManifest.xml的<intent-filter android:priority="xxx">设置;比如存在3个广播接收者A、B、C,优先级A>B>C,因此A最先收到广播,当A收到广播后,可以向广播中添加一些数据给下一个接收者(intent.putExtra()),或者终止广播(abortBroadcast());Context.sendOrderedBroadcast(intent)。
二、本地广播(本应用)
public class MainActivity extends AppCompatActivity {
private IntentFilter intentFilter;
private LocalReceiver localReceiver;
//本地广播管理者
private LocalBroadcastManager localBroadcastManager;
@Override
public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
supportRequestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.activity_main);
//获取本地广播管理者实例。
localBroadcastManager=LocalBroadcastManager.getInstance(this);
Button button=(Button)findViewById(R.id.button);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent=new Intent("com.example.tangyi.receiver5.LOCAL_BROADCAST");
//发送本地广播。
localBroadcastManager.sendBroadcast(intent);
}
});
//新建intentFilter并给其action标签赋值。
intentFilter=new IntentFilter();
intentFilter.addAction("com.example.tangyi.receiver5.LOCAL_BROADCAST");
//广播接收者实例(记得注册并注册);将其接收器与action标签进行绑定。
localReceiver=new LocalReceiver();
localBroadcastManager.registerReceiver(localReceiver,intentFilter);
}
@Override
public void onDestroy(){//在onDestroy()方法中取消注册。
super.onDestroy();
//取消注册调用的是unregisterReceiver()方法,并传入接收器实例。
localBroadcastManager.unregisterReceiver(localReceiver);
}
class LocalReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent){
Toast.makeText(context,"这是本地广播接收器",Toast.LENGTH_SHORT).show();
}
}
}
- Android--广播发送者及广播接收者
- Android 广播发送者与广播接收者
- Android广播发送者与广播接收者
- 广播发送者/广播接收者
- Android入门:广播发送者与广播接收者
- Android入门:广播发送者与广播接收者
- Android入门:广播发送者与广播接收者
- Android入门:广播发送者与广播接收者
- Android入门:广播发送者与广播接收者
- Android入门:广播发送者与广播接收者
- Android入门:广播发送者与广播接收者
- Android入门:广播发送者与广播接收者
- [学习笔记]Android广播发送者&广播接收者介绍
- Android入门:广播发送者与广播接收者
- Android入门:广播发送者与广播接收者
- Android-广播接收者:发送有序广播
- Android--广播接收者(发送有序广播)
- Android 广播接收者练习-发送有序广播
- 【线性模型】对数几率回归(LR)
- 文本格式转换为数字:汪琪玩Excel第十五招
- 双12砍价就要简单粗暴:来试试你的刀法如何!一刀一个价
- JAVA的四种访问修饰符
- 更新github项目上的代码
- Android--广播发送者及广播接收者
- 迷茫
- Python函数篇(3)-内置函数、文件处理
- codeforces 13a(进制转换)
- 创建序列及修改序列
- BIGEMAP功能
- 通过HttpURLConnection 上传文件
- linux 下jdk的安装与配置
- iOS 获取手机通讯录常用的两种方式