Android-Activity和Service的具体区别是什么?

Android-Activity和Service的具体区别是什么?

偏爱自由 发布于 2017-02-18 字数 169 浏览 1086 回复 10

android 中的Service也是运行在主线程中,只是没有界面.如果把Activity中不设置view,也可以实现类似的功能。那么Service是不是一个没有view的Activity呢?具体区别是什么呢?

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(10

浮生未歇 2017-10-05 10 楼

1.Activity是Android应用的核心概念,简而言之Activity为用户交互管理者,有一个可视界面呈现,而Service跟Activity的区别是他在后台运行,没有界面呈现。

2service和activity在使用intent上的细小区别,就是intent的传值上有区别
//进行activity与service之间的跳转

//一个activity 叫做 Mp3listActivity

//一个service 叫做 Mp3downloadService

//代码片段
Intent intent = new Intent();

intent.putExtra("mp3info",mp3info);

intent.setClass(this,Mp3downloadService.class);
startService(intent);

//--------------------------

//你看到了跳转到一个service
//--------------------------

//在service中

//startCommand(Inent intent,int flags, int startId)

//取值代码

Mp3Info mp3info = (Mp3Info)intent.getSerializableExtra("mp3info");

//-----------------------------------------------------------------

//进行activity与activity之间的跳转
//一个activity 叫做 Mp3listActivity
//一个activity 叫做 Mp3PlayActivity
//关键代码片段
Intent intent = new Intent();

intent.putExtra("mp3info", mp3info);
intent.setClass(this,Mp3PlayActivity.class);
startActivity(intent);

//-----------------------------
//你看到了跳转到Mp3PlayActivity
//-----------------------------
//onCreate()方法中的取值代码 intent = getIntent();
Mp3Info mp3info = (Mp3Info)intent.getSerializableExtra("mp3info");
//------------------------------------------------
//自己尝试了解,能自己得出Service和activity在intent传值的细小区别

泛泛之交 2017-09-03 9 楼

从设计的角度来讲:
Android的Activity的设计与Web页面非常类似,从页面的跳转通过连接,以及从页面的定位通过URL,从每个页面的独立封装等方面都可以看出来,它主要负责与用户进行交互。

Service则是在后台运行,默默地为用户提供功能,进行调度和统筹,如果一棵树的地上部分是Activity的话,它庞大的根须就是Service。Android的服务组件没有运行在独立的进程或线程中,它和其他的组件一样也在应用的主线程中运行,如果服务组件执行比较耗时的操作就会导致主线程阻塞或者假死,从而无法响应用户的操作。

从使用的角度来讲:
Service不仅可以给Activity建立双向连接,为Activity提供数据和功能支持,也可以单向接受Intent的请求,进行数据的分析处理和功能调度。

从扮演的角色来讲:
Activity的功能比较单一,主要就是显示应用所具有的一些功能,帮助用户与应用进行交互,像一个人的脸。而Service可能扮演功能调度者也能扮演功能提供者,从触发器收集信息进行分析和处理,然后更新界面,修改数据或进行其他操作时是一个功能调度者,从输入法的选择考虑Service扮演的就是一个功能提供者。View组件是Android中用户能够实实在在看到的部分,如按钮,输入框等就是继承自这个类,View只有装入Activity这样的容器中才有意义,而反过来
Activity装入了这些View后才能够成功完成与用户交互的任务,但是Service不需要这些花哨的东西,只需要默默地等待事件发生或者听候差遣。

甜柠檬 2017-07-17 8 楼

Activity和Service的生命周期不一样,Activity处在哪个生命周期是由系统控制的,service是由程序控制的,service不能自己启动,而且service不与用户交互。

甜柠檬 2017-06-19 7 楼

Service后台运行,类似服务,和Activety是一个级别类似,但是自己无法运行,需要Activity或者其他对象调用。

清晨说ぺ晚安 2017-06-17 6 楼

1.Service 是android的一种机制,当它运行的时候如果是Local Service,那么对应的 Service 是运行在主进程的 main 线程上的。如果是Remote Service,那么对应的 Service 则是运行在独立进程的 main 线程上,service和调用者之间的通讯都是同步的(不论是远程service还是本地service),它跟线程一点关系都没有!

2.Thread 的运行是独立于 Activity 的,也就是说当一个 Activity 被 finish 之后,如果你没有主动停止 Thread 或者 Thread 里的 run 方法没有执行完毕的话,Thread 也会一直执行。因此这里会出现一个问题:当 Activity 被 finish 之后,你不再持有该 Thread 的引用,也就是你下次启动的时候,无法控制之前创建的线程,而service则可以。另一方面,你没有办法在不同的 Activity 中对同一 Thread 进行控制。

3.你也可以在 Service 里注册 BroadcastReceiver,在其他地方通过发送 broadcast 来控制它,这些是 Thread 做不到的。

晚风撩人 2017-05-29 5 楼

除了楼上所说的,service的另外一种重要的用途是实现跨进程调用,其中Binder的概念比较重要,AIDL也与Binder有关,而Acitity并不处理跨进程调用的工作。

泛泛之交 2017-04-07 4 楼

具体的区别你可以去看看它们的API,不过从相似度上来说,你可以把service看做是一个没有界面的Activity

灵芸 2017-03-22 3 楼

A Service is an application component that can perform long-running operations in the background and does not provide a user interface.

最重要的区别还是service能后台运行,activity不能。

夜无邪 2017-03-18 2 楼

绝大部分情况下,Service的作用是用来“执行”后台的、耗时的、重要的任务,三者缺一不可,而最重要的原因是第三点:要执行重要的任务。

因为当一个进程启动了Service后,进程的优先级变高了,系统除非在非常极端的情况下,不会杀掉该进程,反观Activity,不具备这样的特性。

如果没有满足上面所说的三点,请谨慎使用Service,千万别把使用Service的理由变成:这样可以常驻后台。从资源使用的角度来看,这是非常不可取的。

偏爱自由 2017-02-23 1 楼

service就是没界面关联的纯逻辑Activity,然后,service能够有两种状态,1.程序退出后在后台运行本服务,2.程序运行时在后台执行某些操作。