集合BroadcastReceiver和Service制作的音乐播放器

2016-04-25 20:29 阅读 7,605 次 评论 2 条

一、摘要

开启一个Service服务播放音乐,MusicPlayerActivity退出后,音乐继续,除非结束Service服务,一个精致的音乐播放器,如下图:
music-broadcast-service-demo

二、项目结构

broadcast-service-demo

三、Service和BroadcastReceiver

创建一个服务,你必须创建一个Service的子类,在实现方法里,你需要重写服务生命周期重要的一些回调的方法,同时为组件绑定到服务提供一个机制,你需要重写的最重要的回调方法:

onStartCommand()

当另外一个组件(比如:activity)请求启动服务时,调用startService()后回调onStartCommand()方法。一旦执行该方法,服务被启动和在后台运行无限地运行。任务执行完成后,调用stopServie()stopSelf()停止服务。

onBind()

当另外一个组件想要绑定一个服务,调用bindService()。在实现的方法里,必须提供用户和服务交流的接口,返回一个IBinderService子类中必须实现该方法,如果你不想绑定服务,只需要返回null即可。

onCreate()

当服务第一次被创建的时候,回调该方法,执行一次创建进程(这个过程在回调onStartCommand()onBind()之前),如果服务已经在运行,不会回调该方法。

onDestroy()

当服务不在使用和准备销毁时回调该方法。在Service的子类中必须实现该方法清除占用的资源,比如:Thread、注册的监听器、接收器等,这是最后被回调的方法。

启动服务的两种方式

一个组件调用startService()启动服务(结果回调onStartCommand()),然后服务直到调用stopSelf()stopService()才停止运行。

如果一个组件调用bindService()方法创建服务(onStartCommand()不会被回调),服务在组件绑定后开始运行,一旦服务解绑,系统就会销毁,即回调onDestroy()

BroadcastReceiver

广播的使用比较简单,如果哪里不明白的,可以留言交流点击“搜索”,输入“BroadcastReceiver”查看对应内容,推荐阅读《Android广播注册两者方式》

四、分析音乐播放器的BroadcastReceiver

在该Demo中,在MusicService注册了一个ServiceReceiver,控制音乐的停止与播放;在MusicPlayerActivity注册了一个ActivityReceiver,改变按钮的图标。在这里需要明白,注册广播的目的就是拦截指定的“秘密”消息,根据“飞鸽传信”的内容确定“进攻”还是“防守”。发送广播的代码如下:

  1. Intent sendIntent = new Intent("cn.com.sgmsc.MusicPlayer.update");  
  2.        sendIntent.putExtra("musicupdate"1);//存放数据  
  3.        sendBroadcast(sendIntent);//发送广播  

注册广播的代码如下:

  1. ActivityReceiver activityReceiver = new ActivityReceiver();          //创建BroadcastReceiver  
  2.         IntentFilter filter = new IntentFilter();           //创建IntentFilter过滤器  
  3.         filter.addAction("cn.com.sgmsc.MusicPlayer.update");//添加Action  
  4.         registerReceiver(activityReceiver, filter);         //注册监听  

你可能感兴趣的文章

来源:TeachCourse每周一次,深入学习Android教程,关注(QQ158#9359$239或公众号TeachCourse)
转载请注明出处: https://www.teachcourse.cn/1695.html ,谢谢支持!

资源分享

Window/Linux下Genymotion快捷键大全 Window/Linux下Genymotion快捷
网站添加百度、谷歌、搜狗、好搜搜录 网站添加百度、谷歌、搜狗、好搜
关于90后结不起婚的原因 关于90后结不起婚的原因
Android广播注册两者方式 Android广播注册两者方式