Broadcast广播的使用
来源:互联网 发布:淘宝发空包什么意思 编辑:程序博客网 时间:2024/04/29 19:52
broadcast作为Android四大组件之一,当然只要要使用都必须的先注册,当然broadcast的注册可以分为静态,和动态注册两种情况
1,broadcast的静态注册
//--静态注册广播 btn = (Button)findViewById(R.id.btn); //--触发广播 btn.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {//--发送广播Intent intent = new Intent("myReceiver");sendBroadcast(intent);}});
还需要有一个类是继承Braodcast接受广播
public class MyReceiver extends BroadcastReceiver {@Overridepublic void onReceive(Context context, Intent intent) {Toast.makeText(context, "广播被触发", 500).show();}}
还有就是在注册文件中注册
<receiver android:name="com.htwx.receiver.MyReceiver"> <intent-filter > <action android:name="myReceiver"></action> </intent-filter> </receiver>
//--动态注册广播 receiver = new DtReceiver(); IntentFilter filter = new IntentFilter(); filter.addAction("dt_receiver"); registerReceiver(receiver, filter); btn_dt = (Button)findViewById(R.id.btn_dt); //--触发广播 btn_dt.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {Intent intent = new Intent("dt_receiver");intent.putExtra("name", "张三");sendBroadcast(intent);}});
再看看继承Broadcast的类
public class DtReceiver extends BroadcastReceiver {@Overridepublic void onReceive(Context context, Intent intent) {String name = intent.getStringExtra("name");Toast.makeText(context, "动态广播被触发:"+name, 500).show();}}
这里面同样是可以传输数据,通过intent的putExtra()方法,再在广播这边进行接受用到了getStringExtra()方法,因为在接受的一方的这个有一个参数intent,就是传输过来的intent,所以可以直接使用getStrngExtra不用在new一个Intent对象
还有一个就是在broadcast里面通过intent进行一个activity之间的跳转,由于这个broadcast没有界面显示
public void onReceive(Context context, Intent intent) {Toast.makeText(context, "broadcast--------------", Toast.LENGTH_LONG).show();Intent next = new Intent(context,Other.class);next.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);context.startActivity(next);}
注意这里不能使用隐身intent,因为这个这里没有显示这个界面显示。再就是在一个broadcast中调用一个Activity,因为没有上下文对象这个需要在给这个intent需要必须重启一个新任务.
一个广播接收者有一个回调方法:void onReceive(Context curContext, Intent broadcastMsg)。当一个广播消息到达接收者是,Android调用它的onReceive()方法并传递给它包含消息的Intent对象。广播接收者被认为仅当它执行 这个方法时是活跃的。当onReceive()返回后,它是不活跃的。
有一个活跃的广播接收者的进程是受保护的,不会被杀死。但是系统可以在任何时候杀死仅有不活跃组件的进程,当占用的内存别的进程需要时。
这带来一个问题,当一个广播消息的响应时费时的,因此应该在独立的线程中做这些事,远离用户界面其它组件运行的主线程。如果onReceive()衍生线程然后返回,整个进程,包括新的线程,被判定为不活跃的(除非进程中的其它应用程序组件是活跃的),将使它处于被杀的危机。解决这个问题的方法是onReceive()启动一个服务,及时服务做这个工作,因此系统知道进程中有活跃的工作在做。
0 0
- Broadcast广播的使用
- Broadcast广播的使用
- 广播broadcast的使用,不断更新中....
- android开发广播的使用Broadcast Receiver
- Android里广播Broadcast的使用
- android之广播Broadcast使用
- 安卓开发之广播的使用(Broadcast)
- [安卓开发] Broadcast 三种广播的使用总结
- iOS swift3.0 广播通知Broadcast notification 的使用
- 初识android的广播BroadCast
- Android的Broadcast广播-笔记
- Broadcast广播的发送方式
- Android 广播(Broadcast)及广播接收器(BroadcastReceiver)的使用
- 广播机制,动态广播,静态的广播Broadcast,
- broadcast广播
- Broadcast广播
- broadcast 广播
- Broadcast广播
- 算数-指数和根
- Socket入门
- 自定义spring schema简化与canal集成
- 诚风老师-直销十三步走
- 正则pumping lemma和infeasible path
- Broadcast广播的使用
- iOS.swift 如何设置tableview禁止上下滚动
- poj 3692 Kindergarten 【最大团 = 补图最大独立集 = 补图节点数 - 补图最大匹配】
- 一个mapreduce同时实现计数与排序
- 排序算法-插入排序_直接插入排序
- MySQL 5.7 zip版 安装过程
- HDU 5527(Too Rich-贪心)
- [273]Integer to English Words
- nyoj--528--找球号(三)(位运算&&set)