梦想 坚持 自由

Just deliberate practice

浅析 - 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简单示例

阅读更多
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/hanj456/article/details/52347317
个人分类: Android
上一篇浅析 - Sqlite的用法和示例
下一篇浅析 - Android异步操作
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭