Android四大组件--服务(Service)
2018-03-28 10:05
369 查看
1. startService和bindService的区别
1. startService:
生命周期: onCreate---onStartCommand---onDestory
与服务的通讯: 无法与服务进行直接通讯
与开启者的关系: 服务一旦开启与开启者(activity)将没有什么联系了,就算开启者销毁了,服务依然存活。
在Settings应用界面中有显示
2. binderSerivce
生命周期: onCreate--onBind--onUnBind--onDestory
与服务通讯: 通过内部代理对象间接调用服务的方法
与开启者的关系: 一旦开启者销毁了,那么服务也将随之销毁。
在Settings应用界面无显示
startService和binderSerivce各自的优缺点:
能不能让服务长期运行在后台,并且还能与服务进行通讯
startService : 让服务长期运行在后台,但是无法与服务进行通讯
bindServcie : 可以与服务进行通讯,但是无法长期运行在后台
2. 本地服务通讯(服务运行在当前的应用程序里面)
1. 定义服务
public class ServcieDemo extends Service {}
2. 注册服务
<service android:name="com.itheima.bind.ServcieDemo"></service>
3. 编写服务的方法
/** * 服务中的内部方法 */ public void methodInService(String name , int money){ if(money <= 100000){ Log.d(this, name+"测试1"); }else{ Log.d(this,name+"测试2"); } }
4. 定义一个内部类
/** *内部代理对象 */ class MyBinder extends Binder{ /** * 内部人员中固有的方法,它的作用就让别人来访问它,然后它自己去访问服务中的方法。 * 通过迂回的手段达到从外部类调用服务中的方法效果。 * @param name * @param money */ public void callMethodInService(String name , int money){ methodInService(name , money); } }
5. 服务绑定后返回内部代理对象
/** * 如果服务成功绑定上了,那么就返回一个通讯频道, * 返回一个内部代理对象 */ @Override public IBinder onBind(Intent intent) { System.out.println("onBind"); //返回内部代理对象 return new MyBinder(); }
6. 在activity绑定服务
//绑定服务 public void bind(View v) { Intent service = new Intent(this , ServcieDemo.class); /** * 第一个参数:intent对象 * 第二个参数:servcieConnection 用于监听服务当前的状态 * 第三个参数:BIND_AUTO_CREATE 服务自动创建,然后绑定。 */ bindService(service, new MyConn(), BIND_AUTO_CREATE); }
7. 在onServcieConnected方法中获取到内部代理对象
/** * 监听服务的状态,服务是启动还是停止都会收到信息。 */ class MyConn implements ServiceConnection{ /** * 如果服务能够成功绑定上,那么这个方法将会调用,启动的参数service就是服务返回的内部对象 MyBinder */ @Override public void onServiceConnected(ComponentName name, IBinder service) { //获取到服务内部返回的代理对象 ,用binder承接起来 binder = (MyBinder) service; } @Override public void onServiceDisconnected(ComponentName name) {} }
8. 在其他地方调用内部对象中的方法
//调用服务的方法 public void call(View v) { //通过内部代理对象,调用内部 类中的方法,实际上是调用了服务中的方法 binder.callMethodInService("张三丰", 1000000); }
3. 远程服务通讯(服务运行在其他的应用程序里面,通过AIDL进行通讯)
4. 系统服务(服务运行在系统当中,通过getsystemService去调用)
相关文章推荐
- Android四大组件之Service(服务)实例详解
- Android中Service(服务)详解,四大组件之一:Service
- Android四大基本组件(2)之Service 服务与Content Provider内容提供者
- Android四大组件之Service(服务)实例详解
- Android四大核心组件之Service:服务
- Android四大组件之Service(观第一行代码2随记)一.服务简介
- 深入剖析Android四大组件(二)——Service服务之启动与绑定
- Android 四大组件 Service 服务
- Android 编程下的四大组件之服务(Service)
- Android 四大组件之一:Service后台服务之IntentService
- Android 四大组件之一 ------- 服务 service
- Android四大组件之Service--前台服务
- Android四大组件之Service(服务)
- Android四大组件服务(Service)
- Android四大组件之------Service(本地服务小案例)
- Android四大组件之服务(service)
- Android四大组件之服务--Service
- Android四大核心组件之一-----Service(服务)的基本知识
- Android四大组件之服务Service的用法
- android四大组件之服务(Service)