标签:client binder 组件 后台 简单 start man .com 播放
Service(服务)是一个没有用户界面的在后台运行执行耗时操作的应用组件。其他应用组件能够启动Service,并且当用户切换到另外的应用场景,Service将持续在后台运行。另外,一个组件能够绑定到一个service与之交互(IPC机制),例如,一个service可能会处理网络操作,播放音乐,操作文件I/O或者与内容提供者(content provider)交互,所有这些活动都是在后台进行。
Service 有两种状态 started(启动的) 和 bound(绑定) 。
通过客户端,通常是一个Activity,调用startService即可启动一个服务,我们称之为StartedService,或者是UnboundService。
service通过startService启动之后,就会独立的运行,与客户端Activity无关,Activity的存在与否不影响service的运行。只有当客户端调用stopService()或者其本身调用stopSelf()时,service才会停止,然后系统将其销毁
通过客户端调用bindService即可将此客户端与一个Service绑定,不过要注意,bindService方法中需要传入一个ServiceConnection实例,来监测服务绑定成功或者失败。
通过bindService将 activity与service绑定之后,客户端(activity)可以通过一个IBinder接口与service通信。当activity结束的时候,需要手动调用unbindService解除与service的绑定。一个service可以与多个客户端绑定,当所有客户端都解除绑定后,系统将会销毁service。
这两种方式并不是完全独立的,一个service被startService启动之后,也可以被客户端绑定。这时如果调用stopService或者stopSelf,系统并不会销毁service,除非所有客户端都解除与此service的绑定。
简单一句话来说,一个既被启动又被绑定的service,只有当所有与之绑定的client全部解除绑定,并且调用stopService或者stopSelf,系统才会销毁此服务。
标签:client binder 组件 后台 简单 start man .com 播放
原文地址:https://www.cnblogs.com/alyssayoung/p/8970878.html