android基础之服务的创建启动,Android 基础之 Service

66b52468c121889b900d4956032f1009.png

8种机械键盘轴体对比

本人程序员,要买一个写代码的键盘,请问红轴和茶轴怎么选?

Service 的含义及作用

Service 是一个可以在后台执行长时间运行操作而不需要提供用户界面的应用组件,也就是说 Service 是为了去处理那些不需要和用户交互但又耗时的操作。但是如果 Service 只是为了执行那些耗时的操作的话,其实只用线程也可以达到同样的目的,之所以需要单独用 Service 来进行实现的原因在于 Service 相较之线程而言优先级比较高,并且 Service 通过绑定启动的时候是可控的,如果系统不是极端不够用,一般而言是不会杀死 Service,但是线程可能存在被系统回收的可能性,所以 Service 的可靠性要比线程高。 另外关于 Service,官网上还有如下的提示: > 服务在其托管进程的主线程中运行,它既不创建自己的线程,也不在单独的进程中运行(除非另行指定)。 这意味着,如果服务将执行任何 CPU 密集型工作或阻止性操作(例如 MP3 播放或联网),则应在服务内创建新线程来完成这项工作。通过使用单独的线程,可以降低发生“应用无响应”(ANR) 错误的风险,而应用的主线程仍可继续专注于运行用户与 Activity 之间的交互

Service 的生命周期

Service 的生命周期主要和服务的使用方式有关,使用服务主要分为启动和绑定两种方式,其生命周期如下图所示:

58b65c95debd4ed4cd6c2bbdc9321a7c.png

Service 的基本使用创建服务 系统提供了一个 Service 抽象类,所以我们自己实现一个继承自 Service 的类,然后在 AndroidManifest.xml 注册即可。

运行服务 运行服务主要方法有两种,一种是调用 startService(),第二种则是 bindService()。实际上这两个方法可以同时调用。

服务中处理事件 startService 启动服务,事件的处理一般在服务的 onStartCommand 方法进行的,bindService 绑定服务之后,将会在 ServiceConnection 的 onServiceConnected 中返回一个 Binder 对象,利用返回的 Binder 对象可以调用相关的事件处理方法。

停止服务 服务的运行条件是服务被绑定或者被启动,所以想让服务不运行则需要破坏这两个条件,可以通过调用 stopService 和 unbindService 实现。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值