12.Android学习之Service应用(一) |
您所在的位置:网站首页 › mservice什么意思 › 12.Android学习之Service应用(一) |
目录 12.Service应用(一) 1.Service概述 1-1.Service 的分类 1-2.Service的生命周期 2.Service 的基本用法 2-1.创建与配置Service 2-2.启动和停止Service 12.Service应用(一) 1.Service概述Service (服务)是能够在后台长时间运行,并且不提供用户界面的应用程序组件。其他应用程序组件能启动Service,并且即便用户切换到另一个应用程序,Service 还可以在后台运行。此外,组件能够绑定到Service并与之交互,甚至执行进程间通信(IPC)。例如,Service 能在后台处理网络事务、播放音乐、执行文件操作或者与Content Provider通信。 1-1.Service 的分类Service按照启动方式可以分为以下两种类型。 ◆Started Service:当应用程序组件(如Activity)通过调用startService() 方法启动Service时,Service处于启动状态。一旦启动, Service 能在后台无限期运行。 ◆Bound Service:当应用程序组件通过调用bindService()方法绑定到Service时,Service处于绑定状态。多个组件可以同时绑定到一个Service 上,当它们都解除绑定时,Service 被销毁。 Started Service与Bound Service的区别如表12.1所示。 表12.1 Started Service与Bound Service的区别 Started Service Bound Service 使用startService()方法启动 调用bindService()方法绑定 通常只启动,不返回值 发送请求,得到返回值 启动Service的组件与Service之间没有关联,即使关闭该组件,Service也会一直运行 启动Service的组件与Service绑定在一起, 如果关闭该组件,Service就会停止运行。 回调onStartCommand()方法,允许组件启动Service 目调onBind()方法,允许组件绑定Service注:Service可以同时属于这两种类型,既可以启动(无限期运行)又能绑定。不管应用程序是否为启动状态、绑定状态或者两者兼有,都能通过Intent对象使用Service,就像使用Activity那样。然而,开发人员可以在配置文件中将Service声明为私有的,从而阻止其他应用程序访问。 1-2.Service的生命周期Service的生命周期比Activity简单很多,但是却需要开发人员更加关注Service如何创建和销毁,因为Service可能在用户不知情的情况下在后台运行。 Service的生命周期可以分成两个不同的路径: ◆通过startService()方法启动Service 当其他组件调用startService()方法时,Service 被创建,并且无限期运行,其自身必须调用stopSelf()方法或者其他组件调用stopService()方法来停止Service。当Service停止时,系统将其销毁。 ◆通过bindService()方法启动Service 当其他组件调用bindService()方法时,Service 被创建,接着客户端通过IBinder接口与Service通信,客户端通过unbindService()方法关闭连接。多个客户端能绑定到同一个Service,并且当它们都解绑定时,系统销毁Service (Service 不需要被停止)。 这两条路径并非完全独立,即开发人员可以绑定已经使用startService()方法启动的Service。例如,后台音乐Service能使用包含音乐信息的Intent 通过调用startService()方法启动。当用户需要控制播放器或者获得当前音乐信息时,可以调用bindService()方法绑定Activity到Service。此时,只有stopService()和stopSelf()方法全部被客户端解绑定时才能停止Service。 为了创建Service,开发人员需要创建Service类或其子类的子类。在实现类中,需要重写一些处理Service生命周期重要方面的回调方法,并根据需要提供组件绑定到Service的机制。需要重写的重要回调方法如表12.2所示。 方法名 描述 < |
今日新闻 |
点击排行 |
|
推荐新闻 |
图片新闻 |
|
专题文章 |
CopyRight 2018-2019 实验室设备网 版权所有 win10的实时保护怎么永久关闭 |