开启服务有两种方式: 如果不会可以看老师的百度音乐盒的案例


1、start方式:
    start方式的生命周期:
       *服务只会被开启一次,直到用户手动停止 服务才会被销毁
        *开启需要调用startService     会执行onCreate(),onStartCommand() 
        *注:当再次点击startService时只会执行onStartCommand()方法,直到用户手动停止或者调用stopService(intent);
          

2、bind方式开启服务
*      作用:引入bindservice的目的是为了调用服务里的方法,完成组件与服务间的通讯
*        绑定服务   调用服务里的方法的过程
           1、在服务里定义一些方法
            2、在服务里定义内部类MyBinde继承Binder
            3、在onBind方法中将MyBinder返回回去
            4、绑定服务bindService(intent,conn,BIND_AUTO_CREATE);  
            5、通过绑定成功后我们就可以拿到中间人对象  利用中间人对象就可以间接的调用服务里面的方法
如果要解除绑定可以调用unBindService

百度音乐盒案例:源码:
  1. 接口:


  2. package com.itheima.baidumusic;
  3. public interface Iservice {
  4. public void callPlay();
  5. public void callPause();
  6. public void callResume();
  7. }
  1. 服务:
  2. package com.itheima.baidumusic;
  3. import android.app.Service;
  4. import android.content.Intent;
  5. import android.os.Binder;
  6. import android.os.IBinder;
  7. public class MusicService extends Service {
  8. @Override
  9. public IBinder onBind(Intent intent) {
  10. return new Mybinder();
  11. }
  12. /**
  13. * 播放的方法
  14. */
  15. public void play(){
  16. System.out.println("音乐播放了");
  17. }
  18. /**
  19. * 暂停的方法
  20. */
  21. public void pause(){
  22. System.out.println("音乐暂停了");
  23. }
  24. /**
  25. * 继续播放的方法
  26. */
  27. public void resume(){
  28. System.out.println("音乐继续播放");
  29. }
  30. /**
  31. * 定义中间人对象 在 onBind方法中返回
  32. * @author Administrator
  33. *
  34. */
  35. private class Mybinder extends Binder implements Iservice{
  36. @Override
  37. public void callPlay() {
  38. play();
  39. }
  40. @Override
  41. public void callPause() {
  42. pause();
  43. }
  44. @Override
  45. public void callResume() {
  46. resume();
  47. }
  48. }
  49. }

  1. 入口:

  2. package com.itheima.baidumusic;
  3. import android.os.Bundle;
  4. import android.os.IBinder;
  5. import android.app.Activity;
  6. import android.content.ComponentName;
  7. import android.content.Intent;
  8. import android.content.ServiceConnection;
  9. import android.view.Menu;
  10. import android.view.View;
  11. public class MainActivity extends Activity {
  12. //我的中间人对象
  13. private Iservice iservice;
  14. private MyConn conn;
  15. @Override
  16. protected void onCreate(Bundle savedInstanceState) {
  17. super.onCreate(savedInstanceState);
  18. setContentView(R.layout.activity_main);
  19. // 1 我要保证 music服务在后台长期运行 我需要调用 startservice 方法
  20. Intent intent = new Intent(this,MusicService.class);
  21. startService(intent);
  22. // 2 我需要调用服务里面的方法 我采用 bindService
  23. conn = new MyConn();
  24. bindService(intent, conn, BIND_AUTO_CREATE);
  25. // 3 要做解绑操作 要记得擦屁股
  26. }
  27. /**
  28. * 播放音乐
  29. */
  30. public void play(View v){
  31. iservice.callPlay();
  32. }
  33. /**
  34. * 暂停播放
  35. */
  36. public void pause(View v){
  37. iservice.callPause();
  38. }
  39. /**
  40. * 继续播放
  41. */
  42. public void resume(View v){
  43. iservice.callResume();
  44. }
  45. /**
  46. * 定义绑定服务的接口
  47. * @author Administrator
  48. *
  49. */
  50. private class MyConn implements ServiceConnection{
  51. // 当服务被成功绑定的时候调用
  52. @Override
  53. public void onServiceConnected(ComponentName name, IBinder service) {
  54. iservice = (Iservice) service;
  55. }
  56. @Override
  57. public void onServiceDisconnected(ComponentName name) {
  58. }
  59. }
  60. // 当activity 销毁的时候调用
  61. @Override
  62. protected void onDestroy() {
  63. //解绑服务
  64. unbindService(conn);
  65. super.onDestroy();
  66. }
  67. }
  1. 清单:


  2. <service android:name="com.itheima.baidumusic.MusicService"></service>

来自为知笔记(Wiz)

转载于:https://www.cnblogs.com/candledragle/p/4218386.html

Services(服务)相关推荐

  1. 远程桌面无法连接服务器,启动Terminal Services 服务报1053错误

    今天碰到一棘手问题,一上午数据库服务器都无法连接,远程桌面也连不上了,但是可以PING通.项目组的同事一直反映数据库无法连接,耽误工作进度,真急人啊. 跑到机房一看,机器轰轰巨响,进入桌面,点个鼠标半 ...

  2. 基于Spring Boot应用Apache CXF发布Web Services服务

    记录:298 场景:使用Spring Boot应用Apache CXF发布Web Services服务,实现跨系统之间交互接口. 版本: JDK 1.8 Spring Boot 2.6.3 Apach ...

  3. Zend Studio13.6.1创建web services服务

    Zend Studio13.6.1创建web services服务 一.开发环境 1.1 zendstudio13.6.1 1.2 apache httpd-2.4.46-o111j-x64-vc15 ...

  4. 手动启动Remote Desktop Services服务,报错提示:“系统无法找到指定文件” ,该如何解决

    手动启动Remote Desktop Services服务,报错提示:"系统无法找到指定文件" 解决方法: 1.打开regedit,找到路径HKEY_LOCAL_MACHINE\S ...

  5. w ndows更新,如何解决 Wndows 7 安装更新时遇到的 8024402f 错误及修复损坏的 Cryptographic Services 服务.pdf...

    如何解决 Wndows 7 安装更新时遇到的 8024402f 错误及修复损坏的 Cryptographic Services 服务 嚼 华 刷 亡 披 风 秸 凶 毛 搪 迎 腾 技 班 籽 办 纯 ...

  6. WCF Data Services服务端处理汇总

    和可以在客户端直接使用的查询对应,在服务端也有很多可以增强的功能 Service Operations 自己发布一些业务逻辑的处理 Service operations enable you to e ...

  7. 基于soap 的 python web services 服务开发指南

    文章大纲 序言 相关概念 SOA web services SOAP WSDL UDDI 环境搭建 我们使用 python 3.6 这个较新python 版本 服务端开发 客户端开发 suds-jur ...

  8. 本地 Services(服务)

    Services 什么是Services android中服务是运行在后台的东西,级别与activity一样.既然说service是运行在后台的服务,那么它就是不可见的,没有界面的东西.可以启动一个服 ...

  9. Windows server 2008启动remote dosktop services服务报错1079

    原创 欢迎转载,届时请注明出处 报错场景 今天,刚开始启动win server的远程连接服务(remote desktop services)时 该服务可以正常启动,然后选择了  "计算机- ...

  10. .NET Web Services服务

    一.简介 Web Services 可使您的应用程序成为 Web 应用程序. Web Services 通过 Web 进行发布.查找和使用. 1.什么是Web Services? Web Servic ...

最新文章

  1. 如何搞垮一个技术大牛?
  2. Sublime text 2/3 中 Package Control 的安装与使用方法
  3. linux下find查找带有指定权限的文件(windows下编译的源代码文件)
  4. 【ARM】Tiny4412裸板编程之按键
  5. Linux程序实现弹框,jQuery实现弹出框 效果绝对美观
  6. centos7 mysql 5.5.27_centos7上安装mysql-5.7.27
  7. mysql 柱状图统计_js/jquery 进行动态统计 各种柱状图 饼状图 线条图 等
  8. 苹果更新watchOS 7.3.1:修复Apple Watch进入省电模式后无法充电的问题
  9. 滴滴医护专车新增南京 共上线6城覆盖1.8万医护
  10. python为什么叫爬虫-python为什么叫爬虫?为什么python开发会突然火起来?
  11. html框架 book,HTML框架的基本结构的.doc
  12. java关键字有system吗_java 关键字
  13. Android 超级工具类
  14. jdbc连接timesten_Java 连接 timesten
  15. python爬取上证50ETF成分股信息
  16. 游戏外挂怎么来的?十年经验的老程序员道出了这些不为人知的秘密
  17. 分布式事务—Lec12课前资料
  18. saas-export项目-系统日志管理-系统日志AOP配置
  19. Android 软件开发时用到的一些有用软件列表
  20. 框架:什么是框架?为什么要使用框架?框架有什么作用

热门文章

  1. 上交2017计算机专业就业,上海交通大学计算机科学与工程系(CSE)
  2. 密码学是如何保护区块链的
  3. Observables简介以及它们与Promise有何不同
  4. 工厂用抽象类比接口_用简单的现实类比解释硬编码概念
  5. Hadoop集群的基本操作(三:HBase的基本操作)
  6. cmd库的导入Java,在cmd命令窗口导入第三方jar包来运行java文件
  7. priority_queue 结构体的优先级设置
  8. java 查询 代码_java使用es查询的示例代码
  9. UI设计师必备技能,看看你都学会了吗?
  10. HTML5培训后好就业吗