iOS的组件间通讯方案核心问题是解决:注册服务、发现服务、调用服务的过程,Android由于每个Activity在安装时就被注册到系统中且可以跨进程可见、跨进程调用,因此无需特殊实现,使用隐式Intent即可。
针对iOS中的六种场景,Android对应的实现:
** 场景1:A组件内部Activity互相调用:**
使用显示Intent,eg:
startActivity(new Intent(this, AlbumActivity.class))
** 场景2:A组件的Activity1调用B组件的Activity2**
使用隐式Intent,eg:
startActivity(new Intent(Intent.ACTION_VIEW, "eg_album"))
** 场景3:外部应用通过URL调用B组件的Activity2**
同场景2
** 场景4:A组件里的H5通过URL调用B组件的Activity2**
同场景2
** 场景5:A组件里的H5通过URL调用A组件里的Activity1**
同场景2
** 场景6:A组件的VC1调用B组件的VC2,并需要拿到VC2的业务处理结果**
同场景2,调用方法改为startActivityForResult
注意:
由于Android Activity注册服务是跨进程可见且跨进程可调用的,因此需要对访问者身份及安全性做校验。