android 服务的应用,在Activity中实现背景音乐播放(转自http://blog.csdn.net/imyang2007/article/details/7597040,仅供个人学习)
来源:互联网 发布:网络在线教育平台 编辑:程序博客网 时间:2024/06/06 05:35
android 服务的应用,在Activity中实现背景音乐播放(转自http://blog.csdn.net/imyang2007/article/details/7597040,仅供个人学习)
在Android应用程序里,有一种没有UI的类(android.app.Service)——Service。简单来说,Service是一个 background process(背景程序),通过背景程序,可以实现一些不需要UI的功能,比如播放背景音乐。
下面是一个实现播放背景音乐的例程:
在上个工程的基础上,在Activity中添加音乐播放功能。
在工程中添加一个新类yypService(File->New->Class):
yypService 类继承 android.app.Service,几个有关Service 的重要概念如下:
1. Service 对象以 separated process 的方式执行,这表示 Service 与 UI(Activity)并不在同一个 process 里执行,而是各自在不同的 process 执行。
2. Android应用程序是在 Activity 启动与停止 Service。
3. 重载(override)onStart() 方法(method)在 Service 被启动,执行我们想要的背景功能。
4. 重载 onDestroy() 方法在 Service 被停止时,停止执行中的背景功能。
下面是Service的具体实现:
至此,一个完整的服务生成,接下来是在Activity中启动服务。
修改 AndroidManifest.xml
在 Package Explorer 视窗里找到目前 Android 项目的资讯描述档,名称为 AndroidManifest.xml。这是一个用來描述 Android 应用程序「整体资讯」的文件,每个 Android 应用程序项目都会有一个。在这里修改 Androidmanifest.xml 的目的是为了「 Android 应用程序加入一个 Service 类别」,这样才有办法驱动 Service。
配置好之后,接下来就是在Activity中添加启动服务代码 Service - startService()。
在OnCreate()中添加如下代码:
Activity 类里有一个 method 叫做 startService:
startService(Intent service)
调用 startService() 即可启动一个 Service ,只是,startService() 的参数是一个「Intent」型,并不是所要启动的类名。「Intent」是一个很像「Event」的类,暂时还没对Intent做深入研究,就先把它当作一个"Event"看吧?
现在,其实已经可以在Activity中播放背景音乐了,但有一个小问题,就是Activity已经被挂起或是被销毁时,背景音乐还是在继续播放的,这也说明Service与Activity是两个不同的进程,我们收下尾,让Activity在OnStop时把背景音乐也停止播放,重载Activity的OnStop:
备注:eclipse的使用小技巧,快速补全重载代码(快捷键Alt+Shift+s -> Override/implement Mothods)。
至此,一个完整的播放背景音乐功能已经全部完成。
- android 服务的应用,在Activity中实现背景音乐播放(转自http://blog.csdn.net/imyang2007/article/details/7597040,仅供个人学习)
- android 服务的应用,在Activity中实现背景音乐播放
- android 服务的应用,在Activity中实现背景音乐播放
- android 服务的应用,在Activity中实现背景音乐播放
- Android Canvas 和Paint的用法 转自http://blog.csdn.net/u010947098/article/details/44574171
- selenium使用中遇到的问题,转自:http://blog.csdn.net/funi16/article/details/9036753
- 转自 http://blog.csdn.net/coollofty/article/details/8058859
- 转自http://blog.csdn.net/rookieding/article/details/7639898
- 转自http://blog.csdn.net/mazhaojuan/article/details/7660657
- 转自: http://blog.csdn.net/ahuier/article/details/8982516
- 转自: http://blog.csdn.net/xiaxiaorui2003/article/details/3838631
- 转自 http://blog.csdn.net/gnehcuoz/article/details/52686824
- 转自 http://blog.csdn.net/g_brightboy/article/details/14229139
- solr搭建企业级应用搜索(转自http://blog.csdn.net/zdshare/article/details/17756121)
- 如何在Android的XML文件中添加注释 本文转载自http://blog.csdn.net/pipisorry/article/details/24833325,感谢原创大神!
- java实现站内搜索转自http://blog.csdn.net/liunian02050328/article/details/8220379
- tensorflow学习笔记:ConfigProto&GPU(转自http://blog.csdn.net/u012436149/article/details/53837651)
- android sdk manager 更新慢解决办法 转自http://blog.csdn.net/exlsunshine/article/details/22208857
- Solr4.6.1配置与建立索引——搜索引擎学习(一)
- HDU 5783 Divide the Sequence 2016 Multi-University Training Contest 5
- objective-c之错误处理
- Git的pull、add、commit、push、clone
- 收到推送通知后页面跳转,当程序在后台,无论进入后台之前在哪个界面,点击收到的推送,跳转到指定界面的2个思路:
- android 服务的应用,在Activity中实现背景音乐播放(转自http://blog.csdn.net/imyang2007/article/details/7597040,仅供个人学习)
- Customize export files in SSRS
- Cocos Creator 动作列表(摘自官方文档)
- Class.getSimpleName()的作用
- 记一个合并代码导致的错误(自定义控件路径改变引起找不到类)
- 小米Git问题-学习笔记
- [LeetCode]--114. Flatten Binary Tree to Linked List
- POJ 3162 Walking Race 树的直径+单调队列(其实暴力也可以>_<)
- mysql rollback与AI