service

来源:互联网 发布:sql注入危害 编辑:程序博客网 时间:2024/06/06 02:32

Service运行于后台的一个组件,没有前台界面,相当于没有界面的activity

1、 Service不是分离开的进程,除非其他特殊情况,它不会运行在自己的进程,而是作为启动运行它的进程的一部分。

2、 Service不是线程,这意味着它将在主线程里劳作。


进程优先级:

  1. foreground process 前台进程:拥有一个正在与用户交互的activity(onResume) 进程
  2. visible process 可见进程:拥有一个可见但是没有焦点的activity(onPause) 进程
  3. service process 服务进程:拥有一个通过startservice方法启动的服务
  4. background process 后台进程:拥有一个不可见的activity(onStop) 进程
  5. empty process 空进程:没有拥有任何活动的应用组件的进程

(1)service用于在后台完成用户指定的操作。service分为两种:

(a)started(启动):当应用程序组件(如activity)调用startService()方法启动服务时,服务处于started状态。(b)bound(绑定):当应用程序组件调用bindService()方法绑定到服务时,服务处于bound状态。

(2)startService()与bindService()区别:

(a)started service(启动服务)是由其他组件调用startService()方法启动的,这导致服务的onStartCommand()方法被调用。
当服务是started状态时,其生命周期与启动它的组件无关,并且可以在后台无限期运行,即使启动服务的组件已经被销毁。因此,服务需要在完成任务后调用stopSelf()方法停止,或者由其他组件调用stopService()方法停止。

(b)使用bindService()方法启用服务,调用者与服务绑定在了一起,调用者一旦退出,服务也就终止,大有“不求同时生,必须同时死”的特点。

(3)开发人员需要在应用程序配置文件中声明全部的service,使用标签。

(4)Service通常位于后台运行,它一般不需要与用户交互,因此Service组件没有图形用户界面。Service组件需要继承Service基类。Service组件通常用于为其他组件提供后台服务或监控其他组件的运行状态。

0 0