【转】 Android学习笔记(21…


转自:http://blog.csdn.net/moruna/article/details/7882381


1、Service介绍

官方解释:Service isan application component that can perform long-running operationsin the background and does not provide a user interface. Anotherapplication component can start a service and it will continue torun in the background even if the user switches to anotherapplication

也就是说Service是一个没有提供用户界面而能够提供在后台运行的构件,其他应用能启动一个Service,即使是切换到其他的应用它还能在后台运行。

2、Service的生命周期

AndroidService的生命周期并不像Activity那么复杂,它只继承了onCreate(),onStart(),onDestroy()三个方法,当我们第一次启动Service时,先后调用了onCreate(),onStart()这两个方法,当停止Service时,则执行onDestroy()方法,这里需要注意的是,如果Service已经启动了,当我们再次启动Service时,不会在执行onCreate()方法,而是直接执行onStart()方法。

3、下面举个播放音乐的例子:

首先在res创建目录raw,然后在里面添加MP3文件

继承一个Service类:

 

[java]  view plain copy
  1. package com.Moruna.studys;  
  2.   
  3. import android.app.Service;  
  4. import android.content.Intent;  
  5. import android.media.MediaPlayer;  
  6. import android.os.IBinder;  
  7.   
  8. public class MyService extends Service  
  9.     private MediaPlayer mp;  
  10.   
  11.     @Override  
  12.     public void onCreate()  
  13.         // TODO Auto-generated method stub  
  14.         // 初始化音乐资源  
  15.         try  
  16.             System.out.println("create player");  
  17.             // 创建MediaPlayer对象  
  18.             mp new MediaPlayer();  
  19.             mp MediaPlayer.create(MyService.thisR.raw.alarm);  
  20.             // mp.prepare();  
  21.         catch (IllegalStateException e)  
  22.             // TODO Auto-generated catch block  
  23.             e.printStackTrace();  
  24.          
  25.         super.onCreate();  
  26.      
  27.   
  28.     @Override  
  29.     public void onStart(Intent intent, int startId)  
  30.         // TODO Auto-generated method stub  
  31.         // 开始播放音乐  
  32.         mp.start();  
  33.         // 音乐播放完毕的事件处理  
  34.         mp.setOnCompletionListener(new MediaPlayer.OnCompletionListener()  
  35.   
  36.             public void onCompletion(MediaPlayer mp)  
  37.                 // TODO Auto-generated method stub  
  38.                 // 循环播放  
  39.                 try  
  40.                     mp.start();  
  41.                 catch (IllegalStateException e)  
  42.                     // TODO Auto-generated catch block  
  43.                     e.printStackTrace();  
  44.                  
  45.              
  46.         });  
  47.         // 播放音乐时发生错误的事件处理  
  48.         mp.setOnErrorListener(new MediaPlayer.OnErrorListener()  
  49.   
  50.             public boolean onError(MediaPlayer mp, int what, int extra)  
  51.                 // TODO Auto-generated method stub  
  52.                 // 释放资源  
  53.                 try  
  54.                     mp.release();  
  55.                 catch (Exception e)  
  56.                     e.printStackTrace();  
  57.                  
  58.   
  59.                 return false 
  60.              
  61.         });  
  62.   
  63.         super.onStart(intent, startId);  
  64.      
  65.   
  66.     @Override  
  67.     public void onDestroy()  
  68.         // TODO Auto-generated method stub  
  69.         // 服务停止时停止播放音乐并释放资源  
  70.         mp.stop();  
  71.         mp.release();  
  72.         super.onDestroy();  
  73.      
  74.   
  75.     @Override  
  76.     public IBinder onBind(Intent intent)  
  77.         // TODO Auto-generated method stub  
  78.         return null 
  79.      
  80.   
  81.  
在Activity中调用MyService启动音乐或关闭音乐,这时就算退出应用,如果没有关闭Service,它还会在后台播放直至关闭

 

在Alarm这个Activity继承类中启动音乐:

 

[java]  view plain copy
  1. // 播放闹铃  
  2.         Intent intentSV new Intent(Alarm.thisMyService.class);  
  3.         startService(intentSV);  

 

在Alarm这个Activity继承类中关闭音乐:

 

[java]  view plain copy
  1. //关闭闹铃声  
  2.         Intent intentSV new Intent(Alarm.thisMyService.class);  
  3.         stopService(intentSV);  

 

这样就能实现Service在后台播放所要播放的音乐,当然,在哪里需要启动或关闭音乐看你自己个人需求。

另需要注意一点的是,别忘了注册:

在AndroidManifest.xml中的Application中加入:

 

[html]  view plain copy
  1. <</span>service android:name=".MyService" />  
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值