android 进程的通信很多,可以用intent传递数据,可以实现数据的共享,可以通过aidl实现进程间的通信,一般如果进程间需求方法调用的时候就要实现aidl
这个说明一下aidl进程间的对象的传递。
我们先是申明一个aidl的接口的文件IWorkFlowPlugin.aidl在里面实现一个对象传递的方法,
interface IWorkFlowPlugin
{
WorkFlowBean getWorkFlowBean();
}
声明一个WorkFlowBean的java的文件,实现Parcelable接口
public class WorkFlowBean implements Parcelable
{
/**
* Parcelable
*/
public static final Parcelable.Creator<WorkFlowBean> CREATOR = new Creator<WorkFlowBean>()
{
@Override
public WorkFlowBean createFromParcel(Parcel source)
{
WorkFlowBean workFlowBean = new WorkFlowBean();
// workFlowBean.ecsSDK = (EcsSDKImpl)source.readSerializable();
workFlowBean.ecsSDK = EcsSDKImpl.getInstance();
return workFlowBean;
}
@Override
public WorkFlowBean[] newArray(int size)
{
return new WorkFlowBean[size];
}
};
private EcsSDKImpl ecsSDK;
@Override
public int describeContents()
{
return 0;
}
public EcsSDKImpl getEcsSDK()
{
return ecsSDK;
}
@Override
public void writeToParcel(Parcel dest, int flags)
{
// dest.writeSerializable(EcsSDKImpl.getInstance());
}
如果想实现对象的传递的时候,必须声明一个新的aidl文件和javaBean的类名一致的
WorkFlowBean.aidl 里面书写 parcelable WorkFlowBean;
实现一个service
public class WorkFlowService extends Service
{
private class WorkFlowServiceImpl extends IWorkFlowPlugin.Stub
{
@Override
public WorkFlowBean getWorkFlowBean()
throws RemoteException
{
return WorkFlowBean.CREATOR.createFromParcel(null);
}
}
@Override
public IBinder onBind(Intent intent)
{
return new WorkFlowServiceImpl();
}
}
在其它的进程中实现一个ServiceConnection的连接类
private class MyServiceConnection implements ServiceConnection
{
@Override
public void onServiceConnected(ComponentName name, IBinder service)
{
workFlowPlugin = IWorkFlowPlugin.Stub.asInterface(service);
}
@Override
public void onServiceDisconnected(ComponentName name)
{
}
}
这个说明一下aidl进程间的对象的传递。
我们先是申明一个aidl的接口的文件IWorkFlowPlugin.aidl在里面实现一个对象传递的方法,
interface IWorkFlowPlugin
{
WorkFlowBean getWorkFlowBean();
}
声明一个WorkFlowBean的java的文件,实现Parcelable接口
public class WorkFlowBean implements Parcelable
{
/**
* Parcelable
*/
public static final Parcelable.Creator<WorkFlowBean> CREATOR = new Creator<WorkFlowBean>()
{
@Override
public WorkFlowBean createFromParcel(Parcel source)
{
WorkFlowBean workFlowBean = new WorkFlowBean();
// workFlowBean.ecsSDK = (EcsSDKImpl)source.readSerializable();
workFlowBean.ecsSDK = EcsSDKImpl.getInstance();
return workFlowBean;
}
@Override
public WorkFlowBean[] newArray(int size)
{
return new WorkFlowBean[size];
}
};
private EcsSDKImpl ecsSDK;
@Override
public int describeContents()
{
return 0;
}
public EcsSDKImpl getEcsSDK()
{
return ecsSDK;
}
@Override
public void writeToParcel(Parcel dest, int flags)
{
// dest.writeSerializable(EcsSDKImpl.getInstance());
}
如果想实现对象的传递的时候,必须声明一个新的aidl文件和javaBean的类名一致的
WorkFlowBean.aidl 里面书写 parcelable WorkFlowBean;
实现一个service
public class WorkFlowService extends Service
{
private class WorkFlowServiceImpl extends IWorkFlowPlugin.Stub
{
@Override
public WorkFlowBean getWorkFlowBean()
throws RemoteException
{
return WorkFlowBean.CREATOR.createFromParcel(null);
}
}
@Override
public IBinder onBind(Intent intent)
{
return new WorkFlowServiceImpl();
}
}
在其它的进程中实现一个ServiceConnection的连接类
private class MyServiceConnection implements ServiceConnection
{
@Override
public void onServiceConnected(ComponentName name, IBinder service)
{
workFlowPlugin = IWorkFlowPlugin.Stub.asInterface(service);
}
@Override
public void onServiceDisconnected(ComponentName name)
{
}
}
发表评论
-
android aidl 主进程子进程间数据相互传递
2012-12-18 11:49 3960android中进程间的通信对与大量的接口的调用的时候,一般是 ... -
android 实现在titlebar上显示进度条
2012-11-13 18:48 864先是在setContextView之前设置界面的样式 requ ... -
android 实现下拉刷新的功能
2012-11-13 15:41 4308在android中有时我们要实现下拉刷新的功能,我在前日人的基 ... -
listView 点击一个Item效果
2012-01-13 17:20 6本人刚做一个项目需求是这样的:展示通话记录的列表,点击每一条记 ... -
android aidl
2012-01-11 11:12 1053android中的进程间的通信很多,下面粗略的讲解一下如何实现 ... -
android 权限大全
2011-12-22 20:08 886android.permission.ACCESS_CHECK ... -
android Action大全
2011-12-21 20:26 1164String ADD_SHORTCUT_ACTION 动作 ... -
android 自定义桌面
2011-12-03 16:23 14131、 把背景图片push到SDCard中 adb pu ... -
android 游戏开发加载界面获取资源文件中图片ID的集合
2011-12-03 13:18 4978主要给大家介绍如何加载界面的图片。正如前面Abs ... -
android 判断网络是否连接可用
2011-12-03 13:06 1694// 判断网络是否正常 public static boole ... -
火星通讯录
2011-11-25 20:27 1427一、用.rar打开apk文档,得到文档结构图如下所示 ... -
android 四种加载模式2
2011-11-16 11:13 994singleInstance模式解决了这个问题(绕了这么半天才 ... -
activity 的四种加载的模式1
2011-11-16 11:11 1029在android应用的开发中有时会activity之间的重复的 ... -
android 面试题
2011-11-09 20:17 1039android 面试题 1.android中进程和进程间的通信 ... -
android ksoap调用天气预报
2011-11-08 19:27 5129下面例子改自网上例子:http://express.ruank ... -
android NDK
2011-11-03 21:34 2073Cygwin+Android NDK的安装 时 间 版 本 ... -
android 判断sdcard是否存在,以及写入权限
2011-10-16 16:57 5784做android 开发的时候经常涉及到权限的问题,而我们像sd ... -
android bitmap
2011-10-14 11:02 845对于android终端应用软件开发的人员来说图片显示时,如果图 ... -
android popupwindow,调用本地的图库,照相
2011-10-14 10:51 5426我们写项目的时候又是要自定义弹出美观的悬浮操作窗口,这里我们可 ... -
android notification
2011-10-14 10:39 1049前些天刚刚做一个项目的预演,要用到广播通知,一下是一些小的学习 ...
相关推荐
虽然Aidl提供了强大的进程间通信能力,但它相比本地方法调用有一定的性能开销,因为涉及到数据的序列化和跨进程通信。此外,Aidl不支持所有Java数据类型,如自定义对象,需要额外实现Parcelable接口。 **8. 其他IPC...
Android提供多种IPC方式,其中AIDL(Android Interface Definition Language)是一种强大的工具,用于定义服务接口并使得不同进程间能透明地调用对方的方法。本篇文章将深入探讨如何在Android中使用AIDL来实现进程间...
总结来说,AIDL是Android系统提供的一种强大工具,它允许不同进程间的对象相互调用方法,从而实现进程间通信。在WPS for Android的场景下,结合`moffice-aidl.jar`和`moffice-event-interface.jar`,开发者可以构建...
在Android系统中,进程间通信(Inter-Process Communication, 简称IPC)是一种关键的技术,使得不同进程...通过理解并实践`AndroidAIDLClient`和`AndroidAIDL`这两个示例,你可以更深入地掌握Android的进程间通信技术。
综上所述,AIDL是Android平台中实现进程间通信的重要手段,通过合理的使用,可以构建出高效、稳定、可扩展的应用程序。通过阅读和理解给定的`MyTestAIDL`代码资源,开发者可以更好地掌握AIDL的工作方式,为今后的...
首先,AIDL是一种简单的接口描述语言,它的主要作用是定义接口,使得Android系统可以自动生成对应的Java绑定类,以便于两个不同进程间的对象调用对方的方法。AIDL文件通常以`.aidl`为扩展名,其中包含了方法声明、...
在Android系统中,AIDL(Android Interface Definition Language)是一种用于实现进程间通信(IPC, Inter-Process Communication)的机制。AIDL允许一个应用服务在不同的进程中运行,使得其他应用能够与之交互,共享...
本资源包“Androidaidl跨进程调用.zip”提供了有关如何使用AIDL进行跨进程调用的源码示例,帮助开发者深入理解并实践这一功能。 首先,AIDL的基本概念是定义一个接口,该接口描述了两个不同进程之间可以交换的数据...
AIDL是Android系统中实现复杂进程间通信的强大工具,它允许应用间高效地交换数据和调用方法。理解和熟练运用AIDL对于开发大型、复杂的Android应用至关重要。通过合理的接口设计和优化,可以充分利用AIDL实现高效的多...
本资源"Androidaidl跨进程调用.rar"包含了两个示例项目:RemoteServerTest和RemoteClientTest,它们分别代表了服务端和客户端,用于演示如何使用AIDL进行跨进程调用。 AIDL的基本概念和工作原理: 1. 接口定义:在...
Android进程间通信 AIDL Service 一、服务端结构 服务端需要处理的有: 1.处理对象,对象内方法,注意:AIDL 只能对函数起作用; 2.处理服务; 3.配置文件; 二、客户端 配置 1.对象,切记,与服务端的对象完全一致...
标题“android aidl跨进程通信”指的是通过AIDL在Android上进行不同进程间的数据交换和功能调用的过程。在Android中,每个应用默认运行在自己的进程中,当需要不同应用间共享数据或调用对方的功能时,就需要借助IPC...
本示例“利用AIDL进程间传输图片”将详细介绍如何在Android Studio 1.5环境下,通过AIDL实现两个进程间传输图片。 首先,我们需要理解AIDL的基本概念。AIDL是一种简单的接口定义语言,它可以让我们定义一个接口,该...
- AIDL调用是异步的,这意味着调用方法不会立即返回结果,而是通过回调或者Future对象来获取结果。 - 跨进程调用会有一定的性能开销,因此应避免频繁的AIDL通信,优化数据传输。 7. **异常处理**: - 在跨进程...
总之,Android AIDL是解决进程间通信问题的有效工具,它使得服务能够被不同应用访问,增强了Android系统的交互性和可扩展性。在实际开发中,理解并熟练掌握AIDL的使用,对于构建健壮、高效的Android应用至关重要。
AIDL(Android Interface Definition Language)是Android提供的一个工具,用于在不同进程间定义和实现接口,使得服务可以在多个应用之间共享。本教程将深入探讨如何使用AIDL来创建一个服务,供三个不同的应用程序...
总结起来,AIDL是Android中实现跨进程通信的重要工具,它允许应用之间通过定义清晰的接口进行数据交换和服务调用,从而实现了进程间的协作。在实际开发中,理解并熟练掌握AIDL能够帮助我们构建更加健壮和可扩展的...