Android复习笔记(6) -BrodCastReceiver (广播接收者
2015-08-03 18:17
661 查看
1.定义广播接收者
定义类继承BroadcastReceiver,重写onReceive方法
getResultData(); 获取Date
setResultDate();
清单文件中声明<receiver>,需要在其中配置<intent-filter>指定接收广播的动作
当接收到匹配广播之后就会执行onReceive方法
BroadcastReceiver除了在清单文件中声明,也可以在代码中声明,使用registerReceiver方法注册Receiver,这样receiver的生命周期就与注册者一样。
生命周期:
广播接收者的生命周期是非常短暂的,在接收到广播的时候创建,onReceive()方法结束之后销毁
例1:监听打电话
1.OutCallReceiver 类
public class OutCallReceiver extends BroadcastReceiver{
@Override
public void onReceive(Context context, Intent
intent) {
String number = getResultData();
System.out.println("电话:" + number);
setResultData("12340" + number);
}
}
2. 在清单文件中声明
<receiver android:name="com.example.recivertest.OutCallReceiver">
<intent-filter >
<!-- 打电话的动作 -->
<action android:name="android.intent.action.NEW_OUTGOING_CALL"/>
</intent-filter>
</receiver>
注意:一定要加权限
<uses-permission android:name="android.permission.PROCESS_OUTGOING_CALLS"/>
例2.在代码中注册
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
registReceiver();
}
private void registReceiver() {
receiver = new OutCallReceiver();
IntentFilter filter = new IntentFilter(Intent.ACTION_NEW_OUTGOING_CALL);
this.registerReceiver(receiver, filter);
}
@Override
protected void onDestroy() {
super.onDestroy();
this.unregisterReceiver(receiver);
}
注意:一定要调用取消注册receiver的方法,不然会后台会报错。
这种方式通常与service使用,在service中注册receiver,这样receiver的生命周期就与service相同。而清单文件中注册,就算应用退出,receiver也一直有效。
定义类继承BroadcastReceiver,重写onReceive方法
getResultData(); 获取Date
setResultDate();
清单文件中声明<receiver>,需要在其中配置<intent-filter>指定接收广播的动作
当接收到匹配广播之后就会执行onReceive方法
BroadcastReceiver除了在清单文件中声明,也可以在代码中声明,使用registerReceiver方法注册Receiver,这样receiver的生命周期就与注册者一样。
生命周期:
广播接收者的生命周期是非常短暂的,在接收到广播的时候创建,onReceive()方法结束之后销毁
例1:监听打电话
1.OutCallReceiver 类
public class OutCallReceiver extends BroadcastReceiver{
@Override
public void onReceive(Context context, Intent
intent) {
String number = getResultData();
System.out.println("电话:" + number);
setResultData("12340" + number);
}
}
2. 在清单文件中声明
<receiver android:name="com.example.recivertest.OutCallReceiver">
<intent-filter >
<!-- 打电话的动作 -->
<action android:name="android.intent.action.NEW_OUTGOING_CALL"/>
</intent-filter>
</receiver>
注意:一定要加权限
<uses-permission android:name="android.permission.PROCESS_OUTGOING_CALLS"/>
例2.在代码中注册
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
registReceiver();
}
private void registReceiver() {
receiver = new OutCallReceiver();
IntentFilter filter = new IntentFilter(Intent.ACTION_NEW_OUTGOING_CALL);
this.registerReceiver(receiver, filter);
}
@Override
protected void onDestroy() {
super.onDestroy();
this.unregisterReceiver(receiver);
}
注意:一定要调用取消注册receiver的方法,不然会后台会报错。
这种方式通常与service使用,在service中注册receiver,这样receiver的生命周期就与service相同。而清单文件中注册,就算应用退出,receiver也一直有效。
相关文章推荐
- 使用C++实现JNI接口需要注意的事项
- Android IPC进程间通讯机制
- Android Manifest 用法
- [转载]Activity中ConfigChanges属性的用法
- Android之获取手机上的图片和视频缩略图thumbnails
- Android之使用Http协议实现文件上传功能
- Android学习笔记(二九):嵌入浏览器
- android string.xml文件中的整型和string型代替
- i-jetty环境搭配与编译
- android之定时器AlarmManager
- android wifi 无线调试
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- android 代码实现控件之间的间距
- android FragmentPagerAdapter的“标准”配置
- Android"解决"onTouch和onClick的冲突问题
- android:installLocation简析
- android searchView的关闭事件
- SourceProvider.getJniDirectories