service thread 使用场景

两者并没有什么关系。先说一下为什么会有Service这个组件,为什么会有它和Thread自身缺点有关系,因为只使用Thread无法解决问题。我们知道他们两个都是在后台执行任务,都没有界面。
我们在使用Thread启动一个子线程来干一些费时的操作时,这个子线程一般是由Activity来启动执行的(假如说没有Service组件),而Thread子线程 的运行是独立于 Activity 的,那么当一个 Activity 被 finish 之后,如果你没有主动停止 Thread 或者 Thread 里的 run 方法没有执行完毕的话,Thread 并不会结束,它会一直执行下去。因此这里会出现一个问题:当 Activity 被 finish 之后,你不再持有该 Thread 的引用,你就无法对其进行控制。
另一方面,你也没有办法在不同的 Activity 中对同一Thread 进行控制。
举个例子:如果你的 Thread 需要不停地过一段时间就要连接服务器一次做某种同步,该 Thread 需要在 Activity 退出后也在运行。这个时候你就没有办法在您启动的 Activity 里面控制之前Activity创建的 Thread,这样这个子线程就相当于一个“野线程”了,你无法对其进行状态监听和控制。

那这个时候Service的价值和意义就体现出来了,你可以创建并启动一个 Service ,在 Service 里面就可以一直创建,运行并控制该 Thread了,不用担心Service退出之后无法再控制Thread,因为Service会一直运行在后台,它没有Activity的界面,不会“显式”的退出。这样便解决了上面使用Thread存在的问题。


Service和Thread的常用使用和区别



猜你喜欢

转载自blog.csdn.net/luoguopeng/article/details/80515089