浅谈BroadcastReceiver的用法
来源:互联网 发布:心理咨询 成都 知乎 编辑:程序博客网 时间:2024/06/02 02:34
最近看了下关于广播方面的东西,加深了理解,也纠正了自己以前的不正确的看法。
关于广播有2中注册方式,一种是在代码中注册,也叫动态注册,另一种是在AndroidManifest里面注册,也叫静态注册。
不管在哪个里面注册,都需要发送广播sendBroadcast()。广播发送的是一个Intent,intent里面一般是action。
如果是在代码里面注册,一般在onResume()方法里面注册。
@Override protected void onResume() { // TODO Auto-generated method stub myReceiver = new MyReceiver(); IntentFilter filter = new IntentFilter(); //向过滤器中添加action filter.addAction("com.android.shang"); //注册广播 registerReceiver(myReceiver, filter); Intent intent = new Intent(); intent.setAction("com.android.xiang"); //发送广播 sendBroadcast(intent); super.onResume(); }
在onPause()方法里面要取消注册。
1 @Override2 protected void onPause() {3 // TODO Auto-generated method stub4 unregisterReceiver(myReceiver);5 super.onPause();6 }
当然,也可以在xml文件中注册:
<receiver android:name=".MyBrocastReceiverTest"> <intent-filter> <action android:name="com.android.xiang"></action> </intent-filter> </receiver>
如果发送的广播的action已经注册了,那么在onReceive()方法中就会接收到发过来的广播,继而做出一些处理。
你可以写出一个内部类:
1 class MyReceiver extends BroadcastReceiver { 2 3 @Override 4 public void onReceive(Context context, Intent intent) { 5 // TODO Auto-generated method stub 6 //从这里的log中可以看到是否接受到了广播 7 System.out.println("intent = " + intent); 8 } 9 10 }
当然也可以单独写一个类:
package com.android.TestBrocastReceiver;import android.content.BroadcastReceiver;import android.content.Context;import android.content.Intent;public class MyBrocastReceiverTest extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { // TODO Auto-generated method stub System.out.println("intent = " + intent); }}
一般如果在代码里面注册,就把广播写在代码里面,在xml文件中注册就单独写一个类。
注册在代码里面:
package com.android.TestBrocastReceiver; import android.app.Activity; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.content.IntentFilter; import android.os.Bundle; public class TestBrocastReceiver extends Activity { MyReceiver myReceiver; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); } @Override protected void onPause() { // TODO Auto-generated method stub unregisterReceiver(myReceiver); super.onPause(); } @Override protected void onResume() { // TODO Auto-generated method stub myReceiver = new MyReceiver(); IntentFilter filter = new IntentFilter(); //向过滤器中添加action filter.addAction("com.android.shang"); //注册广播 registerReceiver(myReceiver, filter); Intent intent = new Intent(); intent.setAction("com.android.xiang"); //发送广播 sendBroadcast(intent); super.onResume(); } class MyReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { // TODO Auto-generated method stub //从这里的log中可以看到是否接受到了广播 System.out.println("intent = " + intent); } } }
注册在xml文件中:
在xml文件中注册,写上一个广播类,然后在activity中发送广播就可以了。
有时系统会发出一些广播,比如说时间的变化等,时间走一秒就会发一个广播,这时我们可以监听这个广播,然后在接收器中做处理就可以了,而不需要在发广播了。
- 浅谈BroadcastReceiver的用法
- 浅谈BroadcastReceiver的用法
- 浅谈BroadcastReceiver
- 浅谈BroadcastReceiver
- Android之BroadcastReceiver的用法
- Android-BroadcastReceiver广播的用法
- BroadCastReceiver 用法
- Android应用开发中BroadcastReceiver的用法
- android----广播(BroadcastReceiver)的用法
- 浅谈DataSet 的用法
- 浅谈DataSet 的用法
- 浅谈Trackback的用法
- 浅谈DataSet 的用法
- 浅谈DataSet 的用法
- 浅谈AutoResetEvent的用法
- 浅谈AutoResetEvent的用法
- 浅谈AutoResetEvent的用法
- remove_if的用法,浅谈
- 进程间的通信
- 一些SQL语句的实现
- 一诵 三皈依文
- Printf实现多参的原理
- 值类型与引用类型比较与区别
- 浅谈BroadcastReceiver的用法
- IIS appPool 设置 自动回收
- 运放【rail to rail】
- 七龙珠—感伤
- 二诵 十戒文
- 功率单位(power control)
- RMAN 配置
- Windows2003与Linux系统权限详解
- 终端控制--termios结构