对Android Service的一些理解

来源:互联网 发布:武汉优化jw100 编辑:程序博客网 时间:2024/06/01 07:54

Service是Android四大组件之一,用于在后台处理一些操作、提供服务,没有提供用户接口、没有界面。 

Service业运行于所属进程的主线程,也不能直接进行网络请求等耗时操作,需要开启新线程来进行耗时操作,或者使用IntentService。

Service有两种启动方式,根据启动方式不同,Service分两种,一种是本地服务,通过startService调用服务,一种是远程服务,通过bindService.

  本地服务,调用组件通过onStart/ onStartCommand()方法开启服务,服务开启后会在后台一直运行,不管调用组件有没有被销毁。因此,通常需要在服务完成后手动的进行服务关闭。关闭服务有两种方式,一是调用组件通过stopService来停止服务,二是Service本身通过stopSelf或者Service.stopSelfResult()来停止。无论调用了多少次startService(),都只需调用一次stopService()来停止。

通常started状态的service执行单任务并且不返回任何结果给启动者。比如当下载或上传一个文件,当这项操作完成时,service应该停止它本身。

远程服务,即bindServie,调用组件可以通过bindService()建立连接,绑定服务,通过unbindService()方法解除绑定,bindService可以被多个调用组件绑定,当所有的调用组件都销毁时,bindService就会自动销毁。一个绑定的service提供一个允许组件与service交互的接口,可以发送请求、获取返回结果,还可以通过夸进程通信来交互(IPC)。

bindServie提供的服务给可被其他应用复用,比如定义一个天气预报服务,提供与其他应用调用即可。


关于生命周期:

一、

  

二关于Service生命周期还有一张比较易懂的图(来源于http://blog.csdn.net/ryantang03/article/details/7770939)


原文出处:http://blog.csdn.net/y394996630/article/details/45888127
0 0