Service介绍(MediaPlayer应用)
一、Service介绍
Service类似于Windows中的服务,没有界面,只是在后台运行;而服务不能自己运行,而是需要调用Context.startService(Intent intent);或Context.bindService(Intent intent)开启服务;
服务分为两种:
(1)访问者与服务无关,则关闭访问者之后,服务能够继续运行,使用startService();
(2)访问者与服务有关(比如访问者需要调用服务提供的方法),则关闭访问者后,服务也要关闭,使用bindService();
服务分为:
(1)本地服务:访问者和服务在一个应用中;
(2)远程服务:访问者和服务在不同应用者;
注:如果我们想让服务开机自动运行,则可以创建一个广播接收者,并在onReceive中调用开启服务代码;
我们这里只介绍“访问者与服务无关”的情况,以后再讲另一种情况;
二、Service核心代码
(1)创建继承Service的类
(2)在AndroidManifest.xml中配置<service>
(3)覆写Service中onCreate();方法
开始服务:
Intent service = new Intent(Context,XxxService.class);
Context.startService(service);
然后会调用onCreate()方法;
停止服务:
Intent service = new Intent(Context,XxxService.class);
Context.stopService(service);
然后会调用onDestroy()方法;
三、Service生命周期
1.通过Context.startService()启动服务
onCreate()-->onStart()-->onDestroy()
onCreate()在创建服务时调用,如果调用多次startService(),onCreate()方法仍然只被调用一次;
onStart()在开始startService()调用时被调用,多次startService(),onStart()方法会被调用多次;
onDestroy()在终止服务时调用;
2.通过Context.bindService()启动服务
onCreate()-->onBind()-->onUnbind()-->onDestroy()
onBind()在绑定服务时调用,如果调用多次bindService(),则onBind()方法只被调用一次;
onUnbind()在解除绑定(unBindService)时调用;
四、MediaPlayer核心代码
Mediaplayer player = MediaPlayer.create(getApplicationContext(), R.raw.xiazdong);//创建MediaPlayer对象
player.setLooping(true);//循环播放
player.start(); //开始播放
player.stop();//停止播放
player.release();//释放资源
四、将MP3播放应用于Service
此处只是实现点击Activity的播放音乐,则开始播放音乐,播放音乐的代码放到Service中,因此就算关闭应用,音乐也不会停止;
效果如下:
MainActivity中点击按钮后执行下面代码:
- private OnClickListener listener = new OnClickListener(){
- @Override
- public void onClick(View v) {
- if(v==button){
- Intent service = new Intent(MainActivity.this,MediaPlayerService.class);
- MainActivity.this.startService(service); //开启服务
- }
- if(v==button2){
- Intent name = new Intent(MainActivity.this,MediaPlayerService.class);
- MainActivity.this.stopService(name); //停止服务
- }
- }
- };
MediaPlayerService.java
- package com.xiazdong.mediaplayer;
- import android.app.Service;
- import android.content.Intent;
- import android.media.MediaPlayer;
- import android.os.IBinder;
- public class MediaPlayerService extends Service {
- private MediaPlayer player;
- @Override
- public IBinder onBind(Intent intent) {
- return null;
- }
- @Override
- public void onCreate() {
- super.onCreate();
- player = MediaPlayer.create(getApplicationContext(), R.raw.xiazdong);
- player.setLooping(true);
- try {
- //因为MediaPlayer的create已经调用了prepare方法,因此此处直接start方法即可
- player.start();
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
- @Override
- public void onDestroy() { //停止服务
- super.onDestroy();
- if(player!=null){
- player.stop();
- player.release();
- player = null;
- }
- }
- }
在AndroidManifest.xml中添加:
- <service android:name=".MediaPlayerService"/>
原文:http://blog.csdn.net/xiazdong/article/details/7772354
Service介绍(MediaPlayer应用)的更多相关文章
- Android Service总结02 service介绍
Android Service总结02 service介绍 版本 版本说明 发布时间 发布人 V1.0 介绍了Service的种类,常用API,生命周期等内容. 2013-03-16 Skywang ...
- 二十三、Pod的service介绍
Pod 的 Service 介绍 一.Service 介绍 Kubernetes Service 定义了这样一种抽象: 一个 Pod 的逻辑分组,一种可以访问它们的策略,通常称为微服务. 这一组 Po ...
- SOA和Web Service介绍
博客园中关于SOA和Web Service的介绍 http://www.cnblogs.com/talentbuilder/archive/2010/05/04/1727044.html http:/ ...
- android Service介绍
一.简介 android中service(服务)运行于后台,没有界面.和其他组件一样,service也运行在主线程中,因此不能用它来做耗时的请求或者动作.可以在服务中开启线程,在线程中做耗时操作.可以 ...
- Android service介绍和启动方式
1.Android service的作用: service通常是用来处理一些耗时操作,或后台执行不提供用户交互界面的操作,例如:下载.播放音乐. 2.Android service的生命周期: ser ...
- web service介绍
WEB SEVICE平台 web Service 三种基本元素: SOAP .WSDL .UDDI 什么是SOAP: XML+HTTP 基本的Web Service平台 SOAP 简易对象 ...
- ODI中web service介绍
ODI WS架构
- Android四大组件之一Service介绍-android学习之旅(十二)
基本概念: service是android四大组件之一,运行在后台执行耗时操作,并不提供用户界面.其他组件如acticity可以通过startService启动该组件,也可以通过bindService ...
- Android——Service介绍与例子
官方定义:Service(服务)是一个没有用户界面的在后台运行执行耗时操作的应用组件.其他应用组件能够启动Service,并且当用户切换到另外的应用场景,Service将持续在后台运行.另外,一个组件 ...
随机推荐
- N层架构实现的一个小例子
主要用到了[单例,抽象工厂,缓存,N层,反射]等知识.架构图如下: 解决方案用到的项目列表如下: 在接口项目中,定义一个IUER接口. namespace IDAL { public interfac ...
- Chapter 1 First Sight——2
"Bella," my mom said to me — the last of a thousand times — before I got on the plane. &qu ...
- mysql触发器之姓名转姓名拼音
人员表people 字段:id,peopleNumber,name,namePinyin,sex,birthday,nation. namePinyin不用填写,根据name自动生成. wordlib ...
- JS常用校验方法(判断输入框是否为空,数字,电话,邮件,四舍五入等)
JS常用校验方法: 1.判断输入框是否为空,为空时弹出提示框 2.关闭窗口 3.检查输入字符串是否为数字 4.强制把大写转换成小写 5.手机号码校验,长度为11位数字. 6.电子邮件校验 7.电话号码 ...
- flexpaper二次开发
1.首先下载FlexPaper的源码.下载地址 2.本人不懂flash,只是百度下,然后自己瞎弄弄的.我用的flash build 4.5 提供个key:1499-4181-9296-6452-299 ...
- 解决airserver在Windows下安装失败的问题
airserver 可以将iphone 实时投影到mac 和 pc.在mac上安装非常简单.但是在Windows上安装时会有很多问题.之前我电脑安装很快就完成了(因为我之前已经在不知情的前提先事先装过 ...
- Python之路【第三篇】:模块
定义: 包:包含__init__.py文件.模块(也是.py文件) 当包被其它模块调用时,首先会执行该包下的__init__文件 包含有模块,包可以有多级 模块的导入: import from...i ...
- 说说JSON和JSONP,浅析JSONP解决AJAX跨域问题
说到AJAX就会不可避免的面临两个问题,第一个是AJAX以何种格式来交换数据?第二个是跨域的需求如何解决?这两个问题目前都有不同的解决方案,比如数据可以用自定义字符串或者用XML来描述,跨域可以通过服 ...
- 从零开始HTML
1.属性 HTML 标签可以拥有属性.属性提供了有关 HTML 元素的更多的信息.属性总是以名称/值对的形式出现,比如:name="value". 属性总是在 HTML 元素的 ...
- 五、pig学习
一.什么是pig 1.pig和sql.map-reduce的关系 来自为知笔记(Wiz)