android进程间通讯方式

android进程间通讯方式

1、进程,android给每个组件Activity,Service,Brocast,等等都提供了process这个标签值,

我们可以定义这些UI组件在哪个process中运行。

 

2、android 中的service都是在独立的process中运行的。

脑补:service有两种启动方式,

一种是startService,一种是bindService 异同点:

两者的生命周期。

StartService 

onCreate()--->onStartCommand()--->onDestory();

bindService

onCreate();----->onBind();---->onUnbind();--->onDestory();

 

 

因为service运行在Activity中,那么它们之间通过什么通讯的呢?

 

在启动Service的时候,我们通过Intent来启动它。

intentandroid的消息机制,通过它我们可以相互之间发送Intent信息。

 

bindService的时候,我们有一个Ibinder的对象可以用来实现Activityservice之间的通讯。

 

但是如果我们面对这样的应用场景,一个音乐播放服务,我们需要多个应用程序都可以去共享操作它。

这个时候就要用到AIDLandroid interface definition language)实现,具体实现方法:

定义一个interface AIDL接口,然后去获取该接口的Ibinder对象。

 

所以进程间通讯是通过通讯主要是通过binder实现的。

 

为什么要这样设计呢?

因为在Android中,默认一个应用程序在一个进程中运行,然后不同的进程有不同的内存存储空间。

我们进程间通讯不可能通过获取变量地址,或者说数据地址来实现。

因为两个进程之间是分离的,所以传输数据要通过Binder实现。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值