多语言展示
当前在线:693今日阅读:84今日分享:32

Android开发之BroadcastReceiver和Service实例

Service是Android四大组件之一,使用频率较Activity少,它的作用在后台静默执行某个任务,然后执行任务的结果返回前台处理或显示,使用服务比较常见的,开启一个Service服务播放音乐,MusicPlayerActivity退出后,音乐继续,除非结束Service服务,一个精致的音乐播放器,如下图:
工具/原料
1

Android开发工具:Android Studio或Eclipse

2

Android测试工具:虚拟设备或测试手机

一、详细分析Service组件
1

项目结构,一个简单的音乐播放器,主界面Activity显示歌词,按钮控制音乐播放或停止,Service后台服务注册广播BroadcastReceiver,同时接受广播,改变按钮的状态,如下图:

2

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

3

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

4

onBind(),当另外一个组件想要绑定一个服务,调用bindService(),这是启动服务的两种 方式之一,详细区别可以参考钊林IT《startService和bindService区别》。在实现的方法里,必须提供用户和服务交流的接口,返回一个IBinder。Service子类中必须实现该方法,如果你不想绑定服务,只需要返回null即可。

5

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

6

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

二、详细分析音乐播放器结构
1

BroadcastReceiver,广播的使用比较简单,如果哪里不明白的,可以参考 TeachCourse另一片文章,点击“搜索”输入“BroadcastReceiver”,查看对应内容,推荐阅读《Android广播注册两者方式》

2

注册广播的两种方式:第一种静态注册,静态注册广播又叫:常驻型广播,广播不会随应用程序的关闭而停止,只要有广播信息,广播接收器都可以接收得到,它是直接在应用程序的AndroidManifest.xml文件中注册。

3

第二种动态注册,动态注册广播又叫:非常驻型广播,应用程序结束了,广播就停止,广播接收者将不会再收到广播信息,在一个Activity的onCreate、onResume中注册,需要在onPause或onDestroy中调用unregisterReceiver(SMSBroadcastReceiver receiver)取消注册,否则会报错。

4

MusicPlayerActivity,设计布局文件,两个按钮控制音乐播放或停止,主体内容是一个ListView填充歌词,外面嵌套ScrollView方便上下滑动,关键代码:

注意事项
1

熟悉Service组件各回调方法的使用以及startService和bindService之间的区别

2

熟悉BroadcastReceiver注册的两种方式区别:静态注册和动态注册

推荐信息