SDK上的解释:会接收被sendBroadcast()发送的Intent对象,你可以用Context.registerReceiver()动态的注册或在AndroidManifest.xml里静态的注册。注意:如果在Activity.onResume()里注册一个recevier,你必须在Activity.onPause()里解注册(你在停止的时候将不会接收到intent,并且这样做会减少不必要的内存开销),不要在Activity.onSaveInstanceState()里注册,因为如果用户回到历史栈中它将不会被调用。
生命周期:BroadcastReceiver对象只有在调用的onReceive(Context,Intent)方法时才有效。
举例使用:
场景:1.在serivce方法中生成一个String并通过intent发送出去;
2.在Activity类中创造一个BroadcastReceiver的内部类接收从service发送过来的Intent对象并解析;
3.在Activity中的onResume()方法中注册。(其中AppConstant.LRC_MESSAGE_ACTION 为任意值,但要保证发送方与接收方一致)
//1中的解释
Intent intent =new Intent();
intent.setAction(AppConstant.LRC_MESSAGE_ACTION);
intent.putExtra("lrcMessage",”abcdefg”);
sendBroadcast(intent);
//2中的解释
class LrcMessageBroadCastReceiver extends BroadcastReceiver
{
@Override
public void onReceive(Context context,Intent intent)
{
//从Intent对象取出歌词信息,然后更新TextView
String lrcMessage = intent.getStringExtra("lrcMessage");
lrcTextView.setText(lrcMessage);
}
}
//3中的解析
protected void onResume()
{
super.onResume();
receiver = new LrcMessageBroadCastReceiver();
registerReceiver(receiver,getIntentFileter());
}