定义内部类广播继承BroadcastReceiver
class AudioBroadCastReceiver extends BroadcastReceiver{
@Override
public void onReceive(Context context, Intent intent) {
Toast.makeText(AudioPlayerActivity.this,"广播接收到了",Toast.LENGTH_LONG).show();
}
}
动态注册:
public void initData(){
//新建一个BroadCast
receiver =new AudioBroadCastReceiver();
//添加意图过滤器
intentFilter= new IntentFilter();
intentFilter.addAction("com.mobile.mobileplayer.audiao_service");//广播标识
registerReceiver(receiver,intentFilter);
}
Activity onDestroy()销毁广播否则会报错:
@Override
protected void onDestroy() {
super.onDestroy();
//注销广播
unregisterReceiver(receiver);
}
在服务里发送广播
new Thread( ){
@Override
public void run() {
if(mediaPlayer.isPlaying()){
Intent intent =new Intent();
intent.setAction("com.mobile.mobileplayer.audiao_service");//广播标识要一致
if(mediaItem!=null){
intent.putExtra("music_name",mediaItem.getName());
intent.putExtra("duration",mediaItem.getDuration());
}
sendBroadcast(intent);
}
}
}.start();
本文详细介绍了如何定义内部类广播并继承BroadcastReceiver,通过动态注册方式在Activity中使用,以及如何在服务中发送广播。同时,强调了在Activity onDestroy()方法中注销广播的重要性,避免内存泄漏。
5752

被折叠的 条评论
为什么被折叠?



