Broadcast的应用

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());
}


你可能感兴趣的:(Broadcast的应用)