美文网首页
为什么要用Service

为什么要用Service

作者: thebestofrocky | 来源:发表于2017-10-25 10:22 被阅读27次

对于Service,看了很多遍相应的demo代码,但是项目中从来没有用过,貌似也没有什么功能非要用到service.

但是Service既然存在,就一定有存在的道理。

转:
Android Service完全解析,关于服务你所需知道的一切(上)
Android Service完全解析,关于服务你所需知道的一切(下)


由此证实了Service确实是运行在主线程里的,也就是说如果你在Service里编写了非常耗时的代码,程序必定会出现ANR的。

你可能会惊呼,这不是坑爹么!?那我要Service又有何用呢?其实大家不要把后台和子线程联系在一起就行了,这是两个完全不同的概念。Android的后台就是指,它的运行是完全不依赖UI的。即使Activity被销毁,或者程序被关闭,只要进程还在,Service就可以继续运行。比如说一些应用程序,始终需要与服务器之间始终保持着心跳连接,就可以使用Service来实现。你可能又会问,前面不是刚刚验证过Service是运行在主线程里的么?在这里一直执行着心跳连接,难道就不会阻塞主线程的运行吗?当然会,但是我们可以在Service中再创建一个子线程,然后在这里去处理耗时逻辑就没问题了。

额,既然在Service里也要创建一个子线程,那为什么不直接在Activity里创建呢?这是因为Activity很难对Thread进行控制,当Activity被销毁之后,就没有任何其它的办法可以再重新获取到之前创建的子线程的实例。而且在一个Activity中创建的子线程,另一个Activity无法对其进行操作。但是Service就不同了,所有的Activity都可以与Service进行关联,然后可以很方便地操作其中的方法,即使Activity被销毁了,之后只要重新与Service建立关联,就又能够获取到原有的Service中Binder的实例。因此,使用Service来处理后台任务,Activity就可以放心地finish,完全不需要担心无法对后台任务进行控制的情况。


相关文章

  • 为什么要用Service

    对于Service,看了很多遍相应的demo代码,但是项目中从来没有用过,貌似也没有什么功能非要用到service...

  • @Import

    为什么要用@Import 我们定义bean对象,一般使用@Component,@Service,然后配合@Comp...

  • IntentService 示例与详解

    为什么要用IntentService IntentService 与 Service 相比的好处:一方面不需要自己...

  • 技术查缺Android篇 Sevice和IPC机制(面试题)

    这一篇主要用来补缺Service部分和IPC。 Service 1 Service的生命周期. onCreate(...

  • 第四周随笔--Service

    Service: Service是一个应用组件,后台操作运行,不需要用户界面; Service不是进程也不是线程 ...

  • Spring对事务(Database Transaction)的

    最近的一个项目在写JavaWeb,在service层需要用到@Transaction,之前也用过但为什么用、怎么用...

  • Kubernetes-dns

    kubernetes中的dns主要用于服务发现,当创建service后可以通过service名称进行通信,例如: ...

  • 为什么dao层和service层要用接口?

    DAO接口为每个DAO声明接口的好处在于: 可以在尚未实现具体DAO的时候编写上层代码,如Service里对DAO...

  • Android Service初涉

    一,Service概述 服务(Service)是Android系统中4个应用程序组件之一。服务主要用于两个目的:后...

  • 使用Service

    在后台,做一些事物的处理,socket,长链接,推送的长链接等,需要用到service。创建Service:pub...

网友评论

      本文标题:为什么要用Service

      本文链接:https://www.haomeiwen.com/subject/tpgfpxtx.html