基础-5 ANDROID service

来源:互联网 发布:什么是蚁群算法 编辑:程序博客网 时间:2024/05/22 11:33

service可以说是一个在后台运行的Activity,它要实现和用户的交互的话需要通过通知栏或则是发送广播,UI去接收显示。
1.本地服务(Local Service):用于应用程序内部
功能:用于实现应用程序自己的一些耗时任务,比如查询升级信息,并不占用应用程序比如Activity所属线程,而是单开线程后台执行,这样用户体验比较好。
使用:在Service可以调用Context.startService()启动,调用Context.stopService()结束。在内部可以调用Service.stopSelf() 或 Service.stopSelfResult()来自己停止。无论调用了多少次startService(),都只需调用一次stopService()来停止。

2.远程服务(Remote Sercie):用于android系统内部的应用程序之间
功能:可被其他应用程序复用,比如天气预报服务,其他应用程序不需要再写这样的服务,调用已有的即可。

使用:可以定义接口并把接口暴露出来,以便其他应用进行操作。客户端建立到服务对象的连接,并通过那个连接来调用服务。调用Context.bindService()方法建立连接,并启动,以调用 Context.unbindService()关闭连接。多个客户端可以绑定至同一个服务。如果服务此时还没有加载,bindService()会先加载它。

按照运行类别分类分:
1.前台服务
前台服务需要调用 startForeground 使服务成为 前台服务。
使用前台服务可以避免服务在后台运行的时候被系统KILL。再onDestroy里面调用stopForeground解除前台运行既可!
2.后台服务
后台服务就是处于后台运行的

1.context.startService() 启动流程(后台处理工作):
context.startService() -> onCreate() -> onStartCommand() -> Service running -> context.stopService() -> onDestroy() -> Service stop

所以调用startService的生命周期大致为:

onCreate(只在创建的时候调用一次直到被摧毁) –> onStartCommand (服务开启后,可多次调用) –> onDestroy

2.context.bindService()启动流程(在本地同一进程内与Activity交互):

context.bindService() -> onCreate() -> onBind() -> Service running -> onUnbind() -> onDestroy() -> Service stop

bindService的生命周期简化为为:onCreate –> onBind –> onUnbind –> onDestory。

0 0
原创粉丝点击