当前位置: 代码迷 >> Android >> 请问下service到底有什么用
  详细解决方案

请问下service到底有什么用

热度:101   发布时间:2016-04-28 05:15:07.0
请教下service到底有什么用
Service是从逻辑上表示一个用来执行"longer-running"的"后台"任务或功能的"application component"。那如果在activity里弄个thread不一样么,为啥要有service?还是说service的作用仅在于提高当前进程的寿命,使其不那么容易被OS干掉?求大神解答

------解决方案--------------------
service 没有可见的用户界面,但是可以在后台运行任意长的时间。
一个主要的例子就是从列表中播放音乐的媒体播放器。播放器程序可能会有一个或几个活动,这些活动可以让用户选择希望播放的音乐然后显示播放。但是音乐播放过程本身不会使用一个活动,因为用户希望在切出播放器界面做别的事情时音乐也能一直放下去。为了保持播放继续,播放器的活动可以启动一个在后台运行的service。然后即使启动这个service的活动退出,音乐播放服务也能继续运行。
你可以连接(connect)或者绑定(bind)到一个正在运行的service(如果这个服务还没运行的话就启动它)。当连接到service后,你可以通过service暴露出来的接口和这个service进行通信,对音乐播放服务来说,这个接口可能允许用户暂停,后退,停止,重新播放等操作。
service 运行在这个应用程序进程的主线程中。因此为了不阻塞其他的组件或者用户界面,service经常为那些耗时长的任务单独开一个线程(比如音乐播放)。
------解决方案--------------------
http://www.eoeandroid.com/forum.php?mod=viewthread&tid=272385
你看一下
1). Thread:Thread 是程序执行的最小单元,它是分配CPU的基本单位。可以用 Thread 来执行一些异步的操作。

2). Service:Service 是android的一种机制,当它运行的时候如果是Local Service,那么对应的 Service 是运行在主进程的 main 线程上的。如:onCreate,onStart 这些函数在被系统调用的时候都是在主进程的 main 线程上运行的。如果是Remote Service,那么对应的 Service 则是运行在独立进程的 main 线程上。因此请不要把 Service 理解成线程,它跟线程半毛钱的关系都没有!

------解决方案--------------------
引用:
Quote: 引用:

额,你可以在activity里面写个音乐播放器,然后启动一个thread去播放他,然后把activity关闭了试试,看它会不会播放

刚开始转学android,写个播放器目前来说有点难(控件还只会个按钮),4L贴的链接里有这样一段话“Thread 的运行是独立于 Activity 的,也就是说当一个 Activity 被 finish 之后,如果你没有主动停止 Thread 或者 Thread 里的 run 方法没有执行完毕的话,Thread 也会一直执行”,显然播放音乐这个功能本身跟activity木有一毛钱关系,那activity关闭后我猜想应该是可以继续播放的。那抛开播放播放器,如果只是做一些简单的计算,那thread显然够用了,就是说在某些场景下(比如不需要与其他activity交互,执行单一的功能并结束)thread是可以取代service的,对吗?

这些理论上的东西你要实际去操作练了才能积累起来,简单的计算当然thread可以
------解决方案--------------------
1. 在设计上 UI和服务分离,提高了代码内聚。
2. service可以作为独立进程运行,UI层可以进行IPC与service交互,比如获取GPS坐标信息。
3. service可以长期在后台运行,比如获取推送广告,最新新闻 并通知给UI层,你的app关闭后 仍然能收到推送的消息。

------解决方案--------------------
http://blog.csdn.net/g19920917/article/details/28389237


from 官网
  相关解决方案