`

android数据通信方式

 
阅读更多

 http://www.itkee.com/developer/detail-339e.html

 

 

  Register

主要用于service之间的通信;如底层有事件通知上层,一般用这个消息机制;

 

android数据通信方式(原创 禁止私自)

 

    Broadcast

主要用于APP层数据的通信,比如广播电量低,有耳机插入,进入/退出飞行模式等等事件;   

   在应用程序代码中进行注册

 

android数据通信方式(原创 禁止私自)

 

特点: 在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端的请求;

 

android数据通信方式(原创 禁止私自)

 

服务器端继承了Ixxx.stub;Ixxx.stub: 实现的比较复杂,主要使用了IPC的机制给client端提供server端的实例,好供client端调用server端的函数;
以下为phone状态变化通过aidl方式传递消息的机制:

 

 

android数据通信方式(原创 禁止私自)
分享到:
评论

相关推荐

    android中跨进程通讯的4种方式

    在android SDK中提供了4种用于跨进程通讯的方式。这4种方式正好对应于android系统中4种应用程序组件:Activity、Content Provider、Broadcast和Service。其中Activity可以跨进程调用其他应用程序的Activity;Content...

    Android连接服务器进行数据通信

    通过http协议进行数据通信,采用的是json方式,实现Android手机与服务器端进行连接通信

    Android两个子线程之间的通信

    Android中两个子线程的通信demo

    android网络通信最常用三种方式 URL,HTTPClient,Socket

    含客户端与服务器端的Demo,带有详细的注释,其中URL可用于下载、加载服务器资源,httpclient可用于传输数据(get/post方式传递json),socket可用于点对点即时通信;望大家多多批评、指教!

    Socket android

    Android与服务器的通信方式主要有两种,一是Http通信,一是Socket通信。两者的最大差异在于,http连接使用的是“请求—响应方式”,即在请求时建立连接通道,当客户端向服务器发送请求后,服务器端才能向客户端返回...

    详解Android 进程间通信的几种实现方式

    在不同应用程序之间交互数据(跨进程通讯),在Android SDK中提供了4种用于跨进程通讯的方式。 这4种方式正好对应于android系统中4种应用程序组件:Activity、Content Provider、Broadcast和Service。其中Activity...

    android 蓝牙数据传输DEMO

    这是个成功通过Bluetooth方式进行通讯的简单demo,拥有蓝牙服务端和客户端的功能,准备两部android手机哦!

    详解Android客户端与服务器交互方式

    要在Android手机客户端与pc服务器交互,需要满足下面几种条件:跨平台、传输数据格式标准、交互方便。 为了与服务器通讯其实无非就两种协议HTTP和TCP,TCP的学习Socket,HTTP的话熟悉一下HTTP协议和相关Java API。而...

    android开发揭秘PDF

    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常用的数据加密方式代码详解

    在android 中一般的加密方式有如下:亦或加密 AES加密 RSA非对称加密 MD5加密算法 当然还有其他的方式,这里暂且介绍以上四种加密算法的使用方式。亦或加密算法什么是亦或加密?亦或加密是对某个字节进行亦或...

    androidjni编程,java和c层的互相通信传递数据

    android开发之jni开发,java层native层之间的相互调用,方便广大学者工作者学习参考

    android x86模拟器和PC相互通信(socket)

    实现方法:android socket ① 服务程序运行在PC端 ② 客户端程序运行在android模拟器 实现形式:由android 模拟器向服务程序发出消息,然后服务程序会送消息至...三、 数据通信用进程方式实现,可以支持多个客户端访问

    在Unity中获取Android系统的Sensor数据.zip

    7. 网络通信:Android 支持多种网络通信方式,包括 HTTP、TCP、UDP 等。 8. 社交媒体集成:Android 提供了集成社交媒体的功能,可以实现与 Facebook、Twitter、Google+ 等社交媒体的交互。 # 注意 1. 本资源仅用于...

    Android 绿豆通讯录【SQLite数据库】

     Android 绿豆通讯录( SQLite数据库 + ListView数据展示控件 ) https://blog.csdn.net/weixin_44949135/article/details/106029404 采用 SQLite数据库 + ListView数据展示控件,可将用户添加的所有信息,分条...

    基于Android平台的数据采集系统设计

    传统数据采集系统因其...统软件,实现移动、便携地进行数据采集,并将接收到的有效数据以文件方式存储。 在实际 工作环境下对该系统进行测试,实践证明该无线采集系统能稳定、有效地采集数据,实现 测量数据无线传输。

    Android蓝牙通信框架BluetoothKit.zip

    BluetoothKit是一款功能强大的Android蓝牙通信框架,支持经典蓝牙和低功耗蓝牙设备混合扫描,提供了一系列简单易用的接口用于低功耗蓝牙设备的连接,数据读写,通知等。 特点 一、支持经典蓝牙和BLE蓝牙...

    NBA数据分析系统(Android客户端代码)- -.zip

    7. 网络通信:Android 支持多种网络通信方式,包括 HTTP、TCP、UDP 等。 8. 社交媒体集成:Android 提供了集成社交媒体的功能,可以实现与 Facebook、Twitter、Google+ 等社交媒体的交互。 # 注意 1. 本资源仅用于...

    【eoeAndroid特刊】第六期 数据通信-成为Android数据流大师

    6.2Android 跟蓝牙耳机建立连接有两种方式。............................................................................................ 27 7.Wi-Fi 简介......................................................

    Android开发—网络通信7—Android中基于HTTP的通信技术视频教程下载(2课程).txt

    使用Http的Get方式读取网络数据.mp4

    Android 通过Socket 和服务器通讯

    Android 通过Socket 和服务器通讯,是一种比较常用的通讯方式,时间比较紧,说下大致的思路,希望能帮到使用socket 进行通信的人 (1)开启一个线程发送消息 SocketOutputThread 消息是放在队列里的,当有消息后...

Global site tag (gtag.js) - Google Analytics