关闭

浅析 - Service启动方式

标签: serviceandroid启动方式绑定bind
119人阅读 评论(0) 收藏 举报
分类:

尊重每个人的付出,转载请点这里: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简单示例

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:18141次
    • 积分:403
    • 等级:
    • 排名:千里之外
    • 原创:19篇
    • 转载:24篇
    • 译文:0篇
    • 评论:0条
    文章分类