`

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数据通信方式(原创 禁止私自)
分享到:
评论

相关推荐

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

    在Android开发中,数据通信是不可或缺的一个重要环节,它...本特刊“【eoeAndroid特刊】第六期 数据通信-成为Android数据流大师.pdf”应该会提供更详尽的理论解析和实践案例,助你在Android数据通信领域更上一层楼。

    Android串口通信(Android Studio)

    - **串口通信**:串口通信是通过串行数据传输的方式进行设备间的通信,常见的串口接口有RS-232、USB转串口等。在Android设备上,串口通常用于与外部硬件设备如模块、传感器等进行数据交互。 - **Android串口API**...

    android网络通信方式

    在 Android 中,网络通信方式是指设备间的数据交换方式。Android 中常用的网络通信方式有 Socket 通信、HTTP 通信等。本文将详细介绍 Socket 通信在 Android 中的应用。 一、Socket 通信 Socket 是一种常用的网络...

    android 中的数据通信

    这篇博客“android中的数据通信”可能涵盖了Android数据通信的各种方法和技术,包括本地数据存储、网络通信和蓝牙等。以下是对这些知识点的详细说明: 1. **本地数据存储**: - **SharedPreferences**: Android...

    android数据存储的四种方式

    本文将详细介绍Android中的四种主要数据存储方式:SharedPreferences、File、SQLite数据库以及网络存储。 1. SharedPreferences: SharedPreferences是Android提供的一种轻量级的数据存储方式,适合存储用户偏好...

    android串口通讯源代码,实现了数据解析,定时更新,用于疫情期间温度传感器

    在Android平台上进行串口通信是实现设备间交互的重要方式,特别是在一些特定的应用场景,如温度传感器数据的实时读取和监控。在这个项目中,我们关注的是一个专为疫情期间设计的Android应用程序,它能够通过串口与...

    android java 开发can通信demo

    CAN协议是一种多主站总线,允许在分布式实时控制系统中进行数据通信。它定义了两种帧格式:标准帧(11位标识符)和扩展帧(29位标识符)。在标准帧中,标识符范围是0x000到0x7FF,而在扩展帧中,标识符范围是0x...

    基于AMF的Android数据通信.pdf

    基于AMF的Android数据通信 Android 数据通信是 Android移动应用开发的重要组成部分,选择合适的数据通信格式对提高应用性能和用户体验非常重要。本文将讨论基于AMF(Action Message Format)的Android数据通信,AMF...

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

    每种跨进程通信方式都有其适用场景,Activity适合轻量级交互,Content Provider适用于数据共享,Broadcast适合全局事件通知,而Service和AIDL则适合处理需要长时间运行或复杂交互的跨进程任务。 在实际开发中,...

    PC 通过USB 与android APP 通信

    这个过程通常涉及到多个技术层面,包括USB通信协议、Android开发者选项、APP编程接口(API)以及数据传输机制。让我们深入探讨一下这些关键知识点。 首先,USB(Universal Serial Bus)是一种标准接口,允许不同...

    Android设备与STM32单片机通信方式探讨.pdf

    本论文探讨了Android设备与STM32单片机之间的通信方式,涵盖了音频通信、串口通信和Bluetooth通信三种不同的技术实现,并对每种通信方式的特点、应用场景、优缺点进行了详细分析。 1. 音频通信 音频通信通过Android...

    Android蓝牙广播通信

    总结来说,Android通过BroadcastReceiver监听蓝牙设备的状态变化,使用BluetoothAdapter和BluetoothDevice进行设备扫描和连接,通过BluetoothSocket进行数据通信。在穿戴设备的开发中,理解并熟练掌握这些蓝牙通信...

    Android端TCP通讯实现

    在Android开发中,TCP(Transmission Control Protocol)通讯是常见的数据传输方式,特别是在需要稳定、可靠的数据交换场景下。本文将详细讲解如何在Android端实现TCP通讯,并介绍如何使用提供的依赖库进行集成,...

    Android手机RS232通信

    这些驱动类会处理与USB设备的通信细节,例如设置波特率、数据位、停止位和校验方式等。 **USB Serial for Android库** 为了简化开发过程,通常会使用开源库,如"USB Serial for Android"。这个库提供了一个通用的...

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

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

    Android-Activity之间数据传递的多种方式

    本文将详细介绍Android中Activity之间数据传递的多种方式及其适用场景。 一、Intent传递数据 Intent是Android系统中用于启动组件(如Activity)的一种消息对象,同时也可以用来在组件间传递数据。Intent的数据传递...

    Android串口通信Demo

    串口通信,也称为串行通信,是一种数据传输方式,通过串行数据线一次传输一个比特位。在Android系统中,由于安全考虑,原生并不支持直接进行串口操作,但通过Java的反射机制或者第三方库,我们可以实现这一功能。 ...

    Android串口通信开发Google官方android-serialport-api源码

    串口通信,也称为串行接口通信,是一种数据通信方式,通过串行数据线将数据一位一位地传输。在Android系统中,虽然原生支持网络和蓝牙通信,但并不直接支持串口通信,因此需要额外的库如`android-serialport-api`来...

    Android两个子线程之间的通信

    Android提供了多种实现子线程间通信的方式: 1. **Handler-Message机制**:这是最常用的一种方式,通过创建Handler对象,一个线程(通常是主线程)注册Handler,另一个线程发送Message到MessageQueue,Handler会...

Global site tag (gtag.js) - Google Analytics