Android中广播分为( )种.,Android IPC的6种方式

Android中的跨进程通信大体有6中方式,

1、Handler + Looper(子线程与UI线程之间的通信)

2、Activity(显示启动和隐式启动)

3、ContentProvider(数据存储和数据共享)

4、BroadcasrReceiver(系统广播和自定义广播)

5、Service(startService和bindService)

6、aidl (跨进程间通信,使用bindService得到binder对象,才能调用远程接口)

在使用上面的区别:

方式

同一个APK

跨APK

传数据

共享接口

Handler+Looper

Yes

NO

Yes

NO

Activity

Yes

Yes

Yes

NO

ContentProvider

Yes

Yes

Yes

NO

BroadcastReceiver

Yes

Yes

Yes

NO

Service

Yes

Yes

Yes

NO

AIDL

Yes

Yes

Yes

Yes

1、Handler+Looper机制

Message:消息。其中包含了消息ID,消息处理对象以及处理的数据等等,由于Message Queue管理,最后由Handler进行处理。

Handler:处理者。负责Message的发送及处理。使用Handler时,需要实现handlerMessage方法,来对特定的Message进行处理,如更新UI。

MessageQueue:消息队列。用来存放Handler发送过来的消息,并且按照FIFO规则执行。当然存放Message并非实际的存放,而是用链表的形式存放,等等Looper的抽取。

Looper:消息泵。不断地从MessageQueue中抽取Message并且发送给Handler进行处理,因此一个MessageQueue需要一个Looper进行管理。          它们的关系如图:

cffeef0a3845bdc13a48449db81784c9.png

注意:

一个线程对应一个Looper,一个Looper对应一个MessageQueue,一个线程可以有多个Handler,由Looper对消息进行分发到Handler的handleMessage中处理。

用法:在开发中使用Handler+Looper的方式主要用于将子线程的操作结果反馈给主线程以便更新UI。

2、Activity

Activity在Android中的作用以及它的生命周期就不说了。这里只介绍它在数据传递上面的方式。Activity之间的数据传递主要是通过Intent.putXXX参数,传递到接收方。作为启动Activity的传递参数,不仅可以启动本apk中的activity,还可以启动另外apk中的activity。在启动方式上分为显式启动和隐式启动,显式启动就是在初始化Intent时指定目标activity的包名和类名。隐式启动就是通过指定目标activity的action属性(如果已指定并且是DEFAULT模式)来启动activity。

3、ContentProvider

Android中的内容提供者,主要用在不同apk之间数据共享。如android手机中的联系人等。

4、BroadcastReceiver

Android中的广播接收器,不断可以捕捉系统发出的广播也可以自定义广播的发送和接收。广播又分为常驻广播和非常驻广播,有序广播和无序广播。如果是自定义广播,需要自己定义Actiion。

5、Service

Android里面的Service在启动上有两种方式,一种是startService另外一种是bindService,对service的影响和方法执行也不一样。StartService时执行Service里onCommandStart方法,而bindService时执行的是onBind方法。在初始化Intent时跟启动Activity时初始化Intent差不多,有两种方式,指定全名或是指定Action但是如果是指定Action的话,此Service必须有DEFAULT属性,同样可以在Intent中putXXX给目标Service传参数。

6、AIDL

AndroidAIDL机制是跨进程之间通讯的方式,主要用在不同apk之间的通信。同一个apk中,没有必要用AIDL。至于通过AIDL来实现进程间的通信,网上很多例子。其核心的内容就是通过Binder!

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值