Android的intent,ibinder,service等等

这些概念很容易绞在一起,这篇文章希望能把它们讲清楚。当然,理解不一定正确,持续更新
建议可以先看看 http://developer.android.com/guide/topics/fundamentals/bound-services.html
Android四种组件:activity,service,broadcast receiver和content provider

1. service
对于service,有两种形式,即bound和started service,就是client通过不同方式启动service产生的差异。
前一种通过bindService,后一种通过startService。
先说startService,这就要求你的service实现onStartCommand.并且显式的结束service(用stopself或调用stopService)
对于bindservice, 会首先直接返回,然后在serviceConnection(由client创建并在bind时传给service)的onServiceConnected收到传给client的Ibinder




Service传回来的Ibinder又有几种实现,分别是extending binder class, using a messenger及AIDL(messenger实际上是对AIDL的封装,所以一般情况我们不直接用AIDL)。
直接扩展binder class用于client和service处于同一process的情况。反之就用messenger
我们可以同时实现既有bound又可以binding的service,如下图所示









2. binder


binder是android采用的IPC方式,就像linux的内存共享,管道,socket一样。我们先有这样一种概念,把它想像成连接两个process间的一条通道。而暂时不要去考虑它的具体实现,这样对我们理解问题又有很大帮助,不然什么东西都绞在一起,会让你迷失方向。

3. intent

intent,顾名思义,就是一种意图。换句话说,是一个描述体, 它包含了我们要做的事情。根据这个意图,去寻找能解决实现它的描述的东东(和intent-filter配合)。就如binder一样,我觉得intent也是一种基元。什么意思呢?就是说它们是一种technique, 具有普遍的用途,而不是仅仅局限在某种特定的场合里。带着这样的观念,你可能会更容易看清为什么很多地方都有intent和binder


  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值