美文网首页
Service和线程的区别

Service和线程的区别

作者: 崽子猪 | 来源:发表于2019-06-04 16:44 被阅读0次

服务(Service)

Service 是android的一种机制,当它运行的时候如果是Local Service,那么对应的Service 是运行在主进程的 main 线程上的。如:onCreate,onStart 这些函数在被系统调用的时候都是在主进程的 main 线程上运行的。如果是Remote Service,那么对应的 Service 则是运行在独立进程的 main 线程上

1.服务不是单一的进程。服务没有自己的进程,应用程序可以不同,服务运行在相同的进程中。

2.服务不是线程。可以在线程中工作。

3.在应用中,如果是长时间的在后台运行,而且不需要交互的情况下,使用服务。

线程(Thread)

Thread 是程序执行的最小单元,它是分配CPU的基本单位。可以用 Thread 来执行一些异步的操作。

1.同样是在后台运行,不需要交互的情况下,如果只是完成某个任务,之后就不需要运行,而且可能是多个任务,需需要长时间运行的情况下使用线程。

2.如果任务占用CPU时间多,资源大的情况下,要使用线程。

那么我们为什么要用 Service 呢?

其实这跟 android 的系统机制有关,我们先拿Thread 来说。Thread 的运行是独立于 Activity 的,也就是说当一个 Activity 被 finish 之后,如果你没有主动停止 Thread 或者 Thread 里的 run 方法没有执行完毕的话,Thread 也会一直执行。因此这里会出现一个问题:当 Activity 被 finish 之后,你不再持有该 Thread 的引用。另一方面,你没有办法在不同的 Activity 中对同一 Thread 进行控制

举个例子

如果你的 Thread 需要不停地隔一段时间就要连接服务器做某种同步的话,该 Thread 需要在 Activity 没有start的时候也在运行。这个时候当你 start 一个 Activity 就没有办法在该 Activity 里面控制之前创建的 Thread。因此你便需要创建并启动一个 Service ,在 Service 里面创建、运行并控制该 Thread,这样便解决了该问题(因为任何 Activity 都可以控制同一 Service,而系统也只会创建一个对应 Service 的实例)

因此你可以把 Service 想象成一种消息服务,而你可以在任何有 Context 的地方调用Context.startService、Context.stopService、Context.bindService,Context.unbindService,来控制它,你也可以在 Service 里注册 BroadcastReceiver,在其他地方通过发送 broadcast 来控制它,当然这些都是 Thread 做不到的

相关文章

  • Service和线程的区别

    服务(Service) Service是android的一种机制,当它运行的时候如果是Local Service,...

  • Android 的 Service

    线程和服务的区别: 1.service默认运行在主线程中,执行耗时操作时,在线程中开启2.service优先级高于...

  • Service工作中的方方面面

    版权声明:本文为小斑马伟原创文章,转载请注明出处! 一、service和线程的区别和场景 线程:是程序执行的最小单...

  • Service详解_其他知识

    本篇内容主要讲解其他关于Service内容: 前台服务以及通知发送 服务Service与线程Thread的区别 A...

  • Service

    1.service 和线程的区别和场景 Thread : 程序执行的最小单元,他是分配CPU的基本单位。Threa...

  • Android----Thread和Service的区别

    Service和Thread的区别? Service有两种存在方式,一种是在另外一个进程的主线程中,一种是在当前进...

  • Service和IntentService区别

    Service和IntentService区别 一、Service和IntentServic定义: Ser...

  • 3 Service相关

    service的应用场景,以及和Thread的区别开启service的两种方式以及区别 1、service是什么?...

  • Service

    1. Service应用场景及 Service和Thread的区别 (1) what is Service(应用场...

  • Service的生命周期

    概念:Android四大组件之一,没有可视化界面,是一个运行于后台的服务程序。 目录Service和线程的区别和场...

网友评论

      本文标题:Service和线程的区别

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