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

2016-04-25 20:29 阅读 3,273 次 评论 0 条
版权声明:本文著作权归TeachCourse所有,未经许可禁止转载,谢谢支持!
转载请注明出处:http://teachcourse.cn/1695.html

一、摘要

开启一个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);         //注册监听  
关注公众号 扫一扫二维码,加我QQ

如果文章对你有帮助,欢迎点击上方按钮关注作者

来源:TeachCourse每周一次,深入学习Android教程,关注(QQ1589359239或公众号TeachCourse)
转载请注明出处:http://teachcourse.cn/1695.html

资源分享

音乐播放器Demo
浅谈SimpleCursorAdapter 浅谈SimpleCursorAdapter
浅谈SortedList方法使用 浅谈SortedList方法使用
修改猎豹浏览器主页与IE浏览器之间的区别 修改猎豹浏览器主页与IE浏览器
关于Android项目中R文件缺失的解决办法 关于Android项目中R文件缺失的

发表评论

呲牙 憨笑 坏笑 偷笑 色 微笑 抓狂 睡觉 酷 流汗 鼓掌 大哭 可怜 疑问 晕 惊讶 得意 尴尬 发怒 奋斗 衰 骷髅 啤酒 吃饭 礼物 强 弱 握手 OK NO 勾引 拳头 差劲 爱你

表情