Android学习之Service(一)

Service

Service为Android的四大组件之一,它被用来执行一些不需要和用户交互的以及运行时间长的任务,一个活动可以启动一个服务,它将继续在后台运行,即使用户切换到另一个应用。

Service可以分为两种基本类型:

#

  1. started
    如果一个应用程序组件(比如一个activity)通过调用startService()来启动服务,则该服务就是被“started”了。一旦被启动,服务就能在后台一直运行下去,即使启动它的组件已经被销毁了。 通常,started的服务执行单一的操作并且不会向调用者返回结果。比如,它可以通过网络下载或上传文件。当操作完成后,服务应该自行终止。
  2. bound
    如果一个应用程序组件通过调用bindService()绑定到服务上,则该服务就是被“bound”了。bound服务提供了一个客户端/服务器接口,允许组件与服务进行交互、发送请求、获取结果,甚至可以利用进程间通信(IPC)跨进程执行这些操作。绑定服务的生存期和被绑定的应用程序组件一致。 多个组件可以同时与一个服务绑定,不过所有的组件解除绑定后,服务也就会被销毁。

下图为官方给出的Service生命周期
Service的生命周期图

服务的完整生存期开始于onCreate()调用时,结束于onDestroy()返回时。与activity类似,服务在onCreate()中完成初始设置工作,并在onDestroy()中释放所有未释放的资源。例如,一个音乐播放服务可以在onCreate()中创建音乐播放线程,而在onDestroy()中终止该线程。 不管是用startService()创建的,还是用bindService()创建的,所有的服务都会调用onCreate()和onDestroy()方法。

服务的活跃生存期开始于onStartCommand()或onBind()的调用。这两个方法分别会传入传给startService()或bindService()的 Intent。 如果服务是started的,则活跃生存期与完整生存期同时结束(即使onStartCommand()返回后,服务仍然处于活跃期。)如果服务是bound的,则活跃生存期在 onUnbind() 返回后结束。

#

定义一个服务

定义一个服务即声明一个继承于Service的类,该类有一个抽象方法onBind()

定义服务之后需要在manifest文件中声明

<manifest ... >
  ...
  <application ... >
      <service android:name=".ExampleService" />
      ...
  </application>
</manifest>

在<service>元素中可以包含很多其它属性,比如定义启动服务所需权限、服务运行的进程之类的属性。android:name是唯一必需的属性——它定义了服务的类名。

#

启动及停止服务

#

Intent startIntent = new Intent(this,MyService.class);
startService(startIntent);//启动服务
Intent stopIntent = new Intent(this,MyService.class);
stopService(stopIntent);//停止服务

在启动服务时,会调用onCreate()方法和onStartCommand()方法,但onCreate()方法仅在第一次创建时调用,而onStartCommand()方法可以被多次调用。

#

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值