浅析 - Service启动方式

尊重每个人的付出,转载请点这里:http://blog.csdn.net/hanj456/article/details/52347317

Sevice两种启动方式

要点:Service启动主要有两种方式:

1.通过context.startService(intent);

2.通过context.bindService(intent,conn,flag);

理解这两者的区别打个比喻就很容易明白:

通过方式1启动service就好比一个同学第一个去教室打开点灯开始自习,然后其他同学陆续进来了,别人不会去关心是谁打开的电灯,晚上自习结束的时候一般最后一个人去关电灯,但这个人是不固定的,也许是第一个打开电灯的同学,也可能是其他人。startService的对象和service之间是没有关联关系的,谁都可以startService,当然谁都可以关闭service;

通过方式2来启动service就好比你去租房子,一般会自己配一把新的门锁,代表你是这个房间的主人,装新锁的这个行为就具有关联性和排他性,就是说这把锁只有对应的钥匙才能打开,谁锁的门谁去开门。bindService 对象和service直接具有关联性,谁绑定的service谁去解绑service。

使用示例:

startService

Intent intent = new Intent(this,MyService.class);
context.startService(intent);

bindService

注意:如果activity和service在同一个进程中直接绑定即可,如果是在不同进程中Android 5.0以后除了指定action外还需要指定service的包名;

同一进程中:

Intent intent = new Intent(this,MyService.class);
intent.bindService(intent,conn,Context.BIND_AUTO_CREATE);

不同进程中:

Intent intent = new Intent();
intent.setAction("com.test.intent.action");
intent.setPakage("com.test.aidlService");
context.bindService(intent,conn,Context.BIND_AUTO_CREATE);

aidl简单示例

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值