Android 四大组件之二-------Service

253 阅读2分钟

一 :Service的生命周期及启动方式:

1:生命周期:

这里写图片描述


1:startService;

2:bindService;

下面贴出两种方式启动代码并说明两者的区别:

  • Started:其他组件调用startService()方法启动一个Service。一旦启动,Service将一直运行在后台(run in the background indefinitely)即便启动Service的组件已被destroy。通常,一个被start的Service会在后台执行单独的操作,也并不给启动它的组件返回结果。比如说,一个start的Service执行在后台下载或上传一个文件的操作,完成之后,Service应自己停止。

  • Bind:其他组件调用bindService()方法绑定一个Service。通过绑定方式启动的Service是一个client-server结构,该Service可以与绑定它的组件进行交互。一个bound service仅在有组件与其绑定时才会运行(A bound service runs only as long as another application component is bound to it),多个组件可与一个service绑定,service不再与任何组件绑定时,该service会被destroy。

1:startService:




以上两个截图展示了startService的启动方式以及数据的传递。Service接受参数,以及后续处理。

2:bindService:



以上两个截图介绍了bindservice启动及传递数据。两种启动方式如果在Service有耗时操作,必须开启线程处理,否则会有ANR异常。

两种启动方式下的使用场景:

1;音乐播放器比较适合startService,及时组件销毁,service以及在后台执行,除非手动执行销毁Service;

2;下载文件,bindservice,下载完成,组件销毁,service也随之销毁。

二:IntentService的介绍以及和Service对比:



IntentService与其它线程区别:


以上内容向大家介绍了Service和IntentService的用法及区别;如有不足之处请大家及时指正交流,谢谢大家。(IntentService最好使用startService启动)