Broadcast的应用

来源:互联网 发布:java线程sleep时间 编辑:程序博客网 时间:2024/05/21 12:30

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{@Overridepublic void onReceive(Context context,Intent intent){//从Intent对象取出歌词信息,然后更新TextViewString lrcMessage = intent.getStringExtra("lrcMessage");lrcTextView.setText(lrcMessage);}}//3中的解析protected void onResume(){super.onResume();receiver = new LrcMessageBroadCastReceiver();registerReceiver(receiver,getIntentFileter());}


原创粉丝点击