Android Services---基础

要创建一个服务,你必须创建一个Service类(或一个既存的Service子类)的子类。在你的实现中,你需要重写一些处理服务生命周期关键特征的回调方法,并且给组件提供一种合适的绑定服务的机制。需要重写的重要的回调方法如下:

onStartCommand()

当一个组件通过调用startService()方法请求启动一个服务时,系统会调用这个服务的onStartCommand()方法。一旦这个方法执行了,那么这个服务就被启动,并且在后台无限期的运行。如果你实现了这个方法,当服务的工作结束时,你有责任通过调用stopSelf()方法或stopService()方法来终止服务。(如果你只想让服务提供绑定的能力,你不需要实现这个方法。)

onBind()

当一个组件想通过调用bindService()方法跟这个服务(如执行RPC)绑定时,系统会调用这个方法。在这个方法的实现中,你必须通过返回一个IBinder对象给客户提供一个用户跟服务进行交互的接口。你必须实现这个方法,但是如果你不允许绑定,那么这个方法应该返回null。

onCreate()

当服务被第一次创建时,系统会调用这个方法来执行一次安装过程(它在onStartCommand()或onBind()方法之前调用)。如果服务正在运行,这个方法就不会被调用。

onDestroy()

当服务不再使用或正在销毁时,系统会调用这个方法。你的服务应该使用这个方法来实现一些清理资源的工作,如清理线程、被注册的监听器、接受器等。这是服务能够接受的最后的调用。

如果组件通过调用startService()方法启动服务,那么这个服务就会一直运行到它自己用stopSelf()方法终止服务,或另一个组件通过调用stopService()方法来终止它。

如果一个组件调用bindService()方法来创建这个服务(并且不调用onStartCommand()方法),那么这个服务只跟绑定的组件运行同样长的时间。一旦这个从所有的客户端解绑,系统就会销毁它。

Android系统只有在内存不足和必须给有用户焦点的Activity回收系统资源时,才会强制终止一个服务。如果服务是被一个有用户焦点的Activity绑定的,那么它不可能被杀死,并且如果这个服务被声明运行在前台(稍后讨论),那么它也几乎不能被杀死。否则如果这个服务被启动并且长时间运行,那么随着时间的推移系统会降低它在后台任务列表中位置,并且这个服务将很容易被杀死---如果你的服务被启动了,那么你必须把它设计成能够通过系统能够妥善的重启。如果系统杀死了你的服务,那么一旦资源变为有效它就会重启(虽然这也依赖从onStartCommand()方法返回的值,稍后讨论)。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值