http://www.itkee.com/developer/detail-339e.html
Register
主要用于service之间的通信;如底层有事件通知上层,一般用这个消息机制;
Broadcast
主要用于APP层数据的通信,比如广播电量低,有耳机插入,进入/退出飞行模式等等事件;
在应用程序代码中进行注册
特点: 在oncreat函数中进行广播机制的注册,当这个activity/service/application生命周期结束时,应该去注册unregisterReceiver;即响应这个广播action必须这个activity/service/application正处于活动状态中;
在AndroidManifest.xml中进行注册
在packages包的AndroidManifest.xml中定义接受器,过滤挑选广播中的Action是否匹配,如下例:
<receiver android:name="SipBroadcastReceiver"> <intent-filter> <action android:name="com.android.phone.SIP_INCOMING_CALL" /> <action android:name="com.android.phone.SIP_ADD_PHONE" /> <action android:name="com.android.phone.SIP_REMOVE_PHONE" /> <action android:name="android.net.sip.SIP_SERVICE_UP" /> </intent-filter> </receiver>
接收器为SipBroadcastReceiver,在类SipBroadcastReceiver中继承了Broadcast实现了onRecieve()方法;对广播的事件进行处理;
特点:应用程序结束了之后,该BroadcastReceiver同样会接受到广播,一直处于活动状态,
Intent
主要用于activity之间消息的传递和activity与service之间消息的传递;不适合service于service之间消息的传递;
显示intent
在构造intent时,就已经指定接收者是谁; 构造intent用的方法是:
- public Intent()
- public Intent(Context packageContext, Class<?> cls)
- public Intent(String action, Uri uri,Context packageContext, Class<?> cls)
以OutgoingCallBroadcaster为例;OutgoingCallBroadcaster启动后;若是拨打电话且拨打的号码是紧急号码,则启动DialtactsActivity页面;
if (Intent.ACTION_CALL.equals(action)) { if (isPotentialEmergencyNumber) { ...... Intent invokeFrameworkDialer = new Intent(); invokeFrameworkDialer.setClassName("com.android.contacts", "com.android.contacts.DialtactsActivity"); invokeFrameworkDialer.setAction(Intent.ACTION_DIAL); invokeFrameworkDialer.setData(intent.getData()); invokeFrameworkDialer.putExtra(SUBSCRIPTION_KEY, mSubscription); startActivity(invokeFrameworkDialer); finish(); return; }
隐式intent
在构造intent时,intent发送者不指定接收者,不关心接受者是谁;接收者在AndroidManifest.xml文件中通过intent fliter中声明自己可以接受哪些intent; 构造intent用的方法是:
- public Intent(String action)
- public Intent(String action, Uri uri)
以拨打一路电话为例:incallscreen中有个添加一路通话的按钮;按下这个按钮就会调用phoneutils中下面这个函数;并发出隐式的intent;
static void startNewCall(final CallManager cm) { ...... Intent intent = new Intent(Intent.ACTION_DIAL); intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); ...... app.mContext.startActivity(intent); }
packages包下的androidmanifest.xml部分对应内容如下,因此启动了OutgoingCallBroadcaster这个activity;
<activity android:name="OutgoingCallBroadcaster" ...... <intent-filter> <action android:name="android.intent.action.CALL" /> <category android:name="android.intent.category.DEFAULT" /> <data android:scheme="tel" /> </intent-filter> ......
AIDL
AIDL应用于不同进程之间的通信,可以满足多线程的处理,因此可以同时接受并处理多个client端的请求;
服务器端继承了Ixxx.stub;Ixxx.stub: 实现的比较复杂,主要使用了IPC的机制给client端提供server端的实例,好供client端调用server端的函数;
以下为phone状态变化通过aidl方式传递消息的机制:
相关推荐
在android SDK中提供了4种用于跨进程通讯的方式。这4种方式正好对应于android系统中4种应用程序组件:Activity、Content Provider、Broadcast和Service。其中Activity可以跨进程调用其他应用程序的Activity;Content...
通过http协议进行数据通信,采用的是json方式,实现Android手机与服务器端进行连接通信
Android中两个子线程的通信demo
含客户端与服务器端的Demo,带有详细的注释,其中URL可用于下载、加载服务器资源,httpclient可用于传输数据(get/post方式传递json),socket可用于点对点即时通信;望大家多多批评、指教!
Android与服务器的通信方式主要有两种,一是Http通信,一是Socket通信。两者的最大差异在于,http连接使用的是“请求—响应方式”,即在请求时建立连接通道,当客户端向服务器发送请求后,服务器端才能向客户端返回...
在不同应用程序之间交互数据(跨进程通讯),在Android SDK中提供了4种用于跨进程通讯的方式。 这4种方式正好对应于android系统中4种应用程序组件:Activity、Content Provider、Broadcast和Service。其中Activity...
这是个成功通过Bluetooth方式进行通讯的简单demo,拥有蓝牙服务端和客户端的功能,准备两部android手机哦!
要在Android手机客户端与pc服务器交互,需要满足下面几种条件:跨平台、传输数据格式标准、交互方便。 为了与服务器通讯其实无非就两种协议HTTP和TCP,TCP的学习Socket,HTTP的话熟悉一下HTTP协议和相关Java API。而...
6.1 Android数据存储初探 6.2 数据存储之Shared Preferences 6.3 数据存储之Files 6.4 数据存储之Network 6.5 Android数据库编程 6.5.1 SQLite简介 6.5.2 SQLite编程详解 6.5.3 SQLiteOpenHelper应用 6.6 数据共享...
在android 中一般的加密方式有如下:亦或加密 AES加密 RSA非对称加密 MD5加密算法 当然还有其他的方式,这里暂且介绍以上四种加密算法的使用方式。亦或加密算法什么是亦或加密?亦或加密是对某个字节进行亦或...
android开发之jni开发,java层native层之间的相互调用,方便广大学者工作者学习参考
实现方法:android socket ① 服务程序运行在PC端 ② 客户端程序运行在android模拟器 实现形式:由android 模拟器向服务程序发出消息,然后服务程序会送消息至...三、 数据通信用进程方式实现,可以支持多个客户端访问
7. 网络通信:Android 支持多种网络通信方式,包括 HTTP、TCP、UDP 等。 8. 社交媒体集成:Android 提供了集成社交媒体的功能,可以实现与 Facebook、Twitter、Google+ 等社交媒体的交互。 # 注意 1. 本资源仅用于...
Android 绿豆通讯录( SQLite数据库 + ListView数据展示控件 ) https://blog.csdn.net/weixin_44949135/article/details/106029404 采用 SQLite数据库 + ListView数据展示控件,可将用户添加的所有信息,分条...
传统数据采集系统因其...统软件,实现移动、便携地进行数据采集,并将接收到的有效数据以文件方式存储。 在实际 工作环境下对该系统进行测试,实践证明该无线采集系统能稳定、有效地采集数据,实现 测量数据无线传输。
BluetoothKit是一款功能强大的Android蓝牙通信框架,支持经典蓝牙和低功耗蓝牙设备混合扫描,提供了一系列简单易用的接口用于低功耗蓝牙设备的连接,数据读写,通知等。 特点 一、支持经典蓝牙和BLE蓝牙...
7. 网络通信:Android 支持多种网络通信方式,包括 HTTP、TCP、UDP 等。 8. 社交媒体集成:Android 提供了集成社交媒体的功能,可以实现与 Facebook、Twitter、Google+ 等社交媒体的交互。 # 注意 1. 本资源仅用于...
6.2Android 跟蓝牙耳机建立连接有两种方式。............................................................................................ 27 7.Wi-Fi 简介......................................................
使用Http的Get方式读取网络数据.mp4
Android 通过Socket 和服务器通讯,是一种比较常用的通讯方式,时间比较紧,说下大致的思路,希望能帮到使用socket 进行通信的人 (1)开启一个线程发送消息 SocketOutputThread 消息是放在队列里的,当有消息后...