Android- BroadCastReceiver 基础学习
来源:互联网 发布:算法第四版的配套网站 编辑:程序博客网 时间:2024/05/16 18:56
1.回顾
上篇 学习 ContentProvider 实现 两个app应用数据共享 ;
2.重点
(1)BroadCastReceiver 重点
(2)生命周期
(3)具体实现
3.BroadCastReceiver
(1)Broadcast是一种广泛运用的在应用程序之间传输信息的机制 .(ContentProvider)
(2)BroadcastReceiver是对发送出来的 Broadcast进行过滤接受并响应的一类组件.
(3)BroadcastReceiver 自身并不实现图形用户界面,但是当它收到某个通知后, BroadcastReceiver 可以启动Activity 作为响应,或者通过 NotificationMananger 提醒用户,或者启动 Service 等等。
(4)生命周期只有十秒左右,如果在 onReceive() 内做超过十秒内的事情,就会报错 ANR(Application No
(2)AndroidMianfest.xml 中注册
Response) 的对话框。
(5)分类
1)普通广播
sendBroadcast(intent2);发送一个广播,所以监听该广播的广播接收者都可以监听到改广播。
2)异步广播
sendStickyBroadcast()当处理完之后的Intent ,依然存在,这时候registerReceiver(BroadcastReceiver, IntentFilter) 还能收到他的 值,直到你把它去掉 , 不能将处理结果传给下一个接收者 , 无法终止广播 .
3)有序广播
sendOrderBroadcast()
按照接收者的优先级顺序接收广播 , 优先级别在 intent-filter 中的 priority 中声明 ,-1000 到1000 之间 , 值越 大 , 优先级越高 . 可以终止广播意图的继续传播 . 接收者可以篡改内容 .
4.生命周期
生命周期只有十秒左右,如果在 onReceive() 内做超过十秒内的事情,就会报错 ANR(Application No
Response) 的对话框。
调用对象 - 实现 onReceive() 方法 - 销毁
5. 静态实现
(1)继承BroadcastReceiver ,实现 onReceive()方法
package com.example.broadcast;import com.example.boradcastdemo.ContentActivity;import com.example.boradcastdemo.MainActivity;import com.example.notification.Ynotification;import android.content.BroadcastReceiver;import android.content.Context;import android.content.Intent;import android.os.Bundle;import android.text.BoringLayout;import android.util.Log;public class Tbroadcast extends BroadcastReceiver {@Overridepublic void onReceive(Context context, Intent intent) {//获取通知String msg=intent.getStringExtra("data");Log.i("MSG","Tbroadcast: "+ msg);//设置通知Ynotification ynotification=new Ynotification(context); Intent intent2= new Intent(context,ContentActivity.class); intent2.putExtra("data",msg);ynotification.sendNotification("Receive","Tbroadcast",msg,intent2);}}
(2)AndroidMianfest.xml 中注册
<!-- 注册 Receiver --> <receiver android:name="com.example.broadcast.Tbroadcast" > <intent-filter android:priority="200" > <action android:name="BCD_DEMO"/> </intent-filter> </receiver>
6.动态实现
(1)和静态实现 第一步一样
(2)代码实现
//动态注册IntentFilter filter=new IntentFilter();filter.addAction("BCD_DEMO");Mbroadcast mbroadcast=new Mbroadcast();registerReceiver(mbroadcast, filter);//发送广播Intent intent1 = new Intent(MainActivity.this,Mbroadcast.class);intent1.putExtra("data",editText1.getText().toString());sendBroadcast(intent1);
7.实例
通过 发送 广播 ,并显示在 通知栏 ;
(1)实现 Notification 类封装
package com.example.notification;import android.annotation.SuppressLint;import android.app.Notification;import android.app.Notification.Builder;import android.app.NotificationManager;import android.app.PendingIntent;import android.content.Context;import android.content.Intent;import com.example.boradcastdemo.R;@SuppressLint("NewApi")public class Ynotification {private final int NOTIFICATION_ID = 1;private Context Mcontext;private NotificationManager manager;// 初始化public Ynotification(Context context) {this.Mcontext = context;manager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);}// 发送 通知public void sendNotification(String ticker, String title, String msg,Intent intent) {Builder builder = new Notification.Builder(Mcontext);// 提醒图标和文字builder.setTicker(ticker);builder.setSmallIcon(R.drawable.ic_launcher);// 通知栏 显示标题和信息builder.setContentTitle(title);builder.setContentInfo(msg);// 设置 震动 ,声音 ,提示灯 (添加权限)builder.setDefaults(Notification.DEFAULT_ALL);// 设置 通知 点击后的跳转的页面PendingIntent pIntent = PendingIntent.getActivity(Mcontext, 0, intent,0);builder.setContentIntent(pIntent);// 建立通知Notification notification = builder.build();manager.notify(NOTIFICATION_ID, notification);}}
(2)实现 TBroadcastReceive 接收
package com.example.broadcast;import com.example.boradcastdemo.ContentActivity;import com.example.boradcastdemo.MainActivity;import com.example.notification.Ynotification;import android.content.BroadcastReceiver;import android.content.Context;import android.content.Intent;import android.os.Bundle;import android.text.BoringLayout;import android.util.Log;public class Tbroadcast extends BroadcastReceiver {@Overridepublic void onReceive(Context context, Intent intent) {//获取通知String msg=intent.getStringExtra("data");Log.i("MSG","Tbroadcast: "+ msg);//设置通知Ynotification ynotification=new Ynotification(context); Intent intent2= new Intent(context,ContentActivity.class); intent2.putExtra("data",msg);ynotification.sendNotification("Receive","Tbroadcast",msg,intent2);}}
(3)实现业务代码
// 静态注册 测试 ReceiverIntent intent = new Intent(MainActivity.this,Tbroadcast.class);intent.putExtra("data",editText1.getText().toString());intent.setAction("BCD_DEMO");sendBroadcast(intent);
(4)效果图
8.demo 免积分下载
http://download.csdn.net/detail/lablenet/9059453
0 0
- Android- BroadCastReceiver 基础学习
- Android之BroadcastReceiver基础学习
- android基础学习之BroadcastReceiver
- Android BroadcastReceiver的基础学习
- 基础学习day07--broadcastReceiver
- Android基础BroadCastReceiver简介
- [Android基础]BroadcastReceiver
- Android基础BroadcastReceiver详解
- Android基础--广播BroadcastReceiver
- Android基础----BroadcastReceiver
- android studio BroadcastReceiver基础
- 基础-4 ANDROID BroadcastReceiver
- Android基础回顾--BroadcastReceiver
- Android (BroadcastReceiver基础)
- [Android] Android BroadcastReceiver 学习
- Android学习篇章28-Broadcast广播基础-BroadcastReceiver
- Android学习-BroadcastReceiver
- Android BroadcastReceiver 学习
- 关键的十个MySQL性能优化技巧
- 导航控制器 导航栏主题设置代码
- 两柱香问题(智力题二)
- C++中的extern
- 三种东西永远不要放到数据库里
- Android- BroadCastReceiver 基础学习
- MySQL架构体系
- hdoj-2018 母牛的故事【水&&递归】
- iOS 推送服务的简易原理与配置
- android图片存储和读取,草稿箱功能
- 根据status信息对MySQL服务器进行优化
- Android Fragment 你应该知道的一切
- JavaScript中奇葩的假值
- 【峰回路转】Excel技巧百例 12.经典数据透视表布局