Service详解

一.Service基础
1.什么是Service
Service是Android中实现程序后台运行的解决方案,是一个可以在后台执行长时间运行操作而没有用户界面的应用组件。
Service可由其他应用(如:Activity,Broadcast)组件启动,服务在启动后会一直在后台运行。
注意:Service(服务)和Broadcast(广播)有一个共同点。它们都是运行在主线程当中,不能耗时操作。

2.Service和Thread的区别
1.Thread是程序执行的最小单元,线程,可以用它来执行一些异步操作
Service是安卓的一种机制,当它运行的时候,如果是本地的Service,那么它对应的Service是运行在主线程上的。
2.Thread 运行是相对独立的,而Service运行是依赖于创建服务时所在的应用程序进程。

二.开启Service的两种方式和区别
1.startService

1.定义一个类继承Service
2.在AndroidManifest.xml中配置该service
3.使用Context的startService(startIntent)方法启动该Service
4.不在使用时调用stopService(stopIntent)方法停止该服务。
MyService 继承 Service
服务启动后,会先调用MyService中的onCreate()的方法。
在用startService启动这个服务时,就会调用onStartCommand方法,一旦调用这个方法,这个服务就会被正式开启。可以在这个方法中做自己的操作。

如果onStartCommand方法返回的是START_STICKY,意味着当整个Service因为内存不足而被系统杀掉的之后,一段时间内存再度空闲的时候,系统会尝试重新创建这个Service,创建成功后,又会调用onStartCommand方法,但其中的intent是空,这个值适合循环播放,天气预报这种服务。

当服务不在被使用的时候调用onDestroy()方法,Service可以在这个方法里面进行一些资源的清理(线程,注册的监听器,Content Provider),会进行回收。

2.bindService

bindService意味着在绑定服务的时候,服务和Activity已经处于绑定状态,绑定服务提供了一个客户端和服务端的接口,相当于Activity和Service交互的接口,它允许Activity和Service进行数据交互,发出请求获取结果等等。甚至如果Activity和Service在不同进程当中的时候,可以进行进程间通信来传输数据,这仅仅是在Activity和Service绑定之后才能运行,同时多个Activity可以绑定一个Service,但是绑定取消后,这个服务就会自动被销毁,并不像startService一样必须要调用stopService才能被销毁

bindService启动的方式:
1.创建Service,继承自Service并在类中,创建一个实现IBinder接口的实例对象并提供公共方法给Activity调用
2.从 onBind()回调方法返回此Binder实例。
3.Activity,从onServiceConnected()回调方法接收Binder,并使用提供的方法调用绑定服务。

和startService不同的是,它在MyService中实现了一个Binder的内部类
值得注意的是和startService不同的是,在onBind方法中它返回了一个Binder,这个downloadBinder是我们自己创建的

在Activity中我们要创建一个ServiceConnection的类,它代表的是Activity和Service的连接。
通过bindService(Intent service, ServiceConnection conn, int flags)方法,来启动Service
通过unbindService(ServiceConnection conn) 方法来停止Service

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值