`
kiddsunhaibo1
  • 浏览: 98139 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

android aidl进程间方法的调用

阅读更多
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)
        {
           
        }
       
    }
分享到:
评论

相关推荐

    android aidl 不同进程间通信

    虽然Aidl提供了强大的进程间通信能力,但它相比本地方法调用有一定的性能开销,因为涉及到数据的序列化和跨进程通信。此外,Aidl不支持所有Java数据类型,如自定义对象,需要额外实现Parcelable接口。 **8. 其他IPC...

    Android使用AIDL实现进程间通信

    Android提供多种IPC方式,其中AIDL(Android Interface Definition Language)是一种强大的工具,用于定义服务接口并使得不同进程间能透明地调用对方的方法。本篇文章将深入探讨如何在Android中使用AIDL来实现进程间...

    Android AIDL进程间通信例子代码

    在Android系统中,进程间通信(Inter-Process Communication, 简称IPC)是一种关键的技术,使得不同进程...通过理解并实践`AndroidAIDLClient`和`AndroidAIDL`这两个示例,你可以更深入地掌握Android的进程间通信技术。

    Android AIDL进程间通信

    综上所述,AIDL是Android平台中实现进程间通信的重要手段,通过合理的使用,可以构建出高效、稳定、可扩展的应用程序。通过阅读和理解给定的`MyTestAIDL`代码资源,开发者可以更好地掌握AIDL的工作方式,为今后的...

    Android aidl 实现进程间通信

    首先,AIDL是一种简单的接口描述语言,它的主要作用是定义接口,使得Android系统可以自动生成对应的Java绑定类,以便于两个不同进程间的对象调用对方的方法。AIDL文件通常以`.aidl`为扩展名,其中包含了方法声明、...

    android aidl进程间通信

    在Android系统中,AIDL(Android Interface Definition Language)是一种用于实现进程间通信(IPC, Inter-Process Communication)的机制。AIDL允许一个应用服务在不同的进程中运行,使得其他应用能够与之交互,共享...

    Androidaidl跨进程调用.zip源码资源下载

    本资源包“Androidaidl跨进程调用.zip”提供了有关如何使用AIDL进行跨进程调用的源码示例,帮助开发者深入理解并实践这一功能。 首先,AIDL的基本概念是定义一个接口,该接口描述了两个不同进程之间可以交换的数据...

    wps for android AIDL调用

    总结来说,AIDL是Android系统提供的一种强大工具,它允许不同进程间的对象相互调用方法,从而实现进程间通信。在WPS for Android的场景下,结合`moffice-aidl.jar`和`moffice-event-interface.jar`,开发者可以构建...

    AIDL进程间通信demo

    AIDL是Android系统中实现复杂进程间通信的强大工具,它允许应用间高效地交换数据和调用方法。理解和熟练运用AIDL对于开发大型、复杂的Android应用至关重要。通过合理的接口设计和优化,可以充分利用AIDL实现高效的多...

    Androidaidl跨进程调用.rar

    本资源"Androidaidl跨进程调用.rar"包含了两个示例项目:RemoteServerTest和RemoteClientTest,它们分别代表了服务端和客户端,用于演示如何使用AIDL进行跨进程调用。 AIDL的基本概念和工作原理: 1. 接口定义:在...

    Android AIDL 进程间通信

    Android进程间通信 AIDL Service 一、服务端结构 服务端需要处理的有: 1.处理对象,对象内方法,注意:AIDL 只能对函数起作用; 2.处理服务; 3.配置文件; 二、客户端 配置 1.对象,切记,与服务端的对象完全一致...

    利用AIDL进程间传输图片例子

    本示例“利用AIDL进程间传输图片”将详细介绍如何在Android Studio 1.5环境下,通过AIDL实现两个进程间传输图片。 首先,我们需要理解AIDL的基本概念。AIDL是一种简单的接口定义语言,它可以让我们定义一个接口,该...

    android aidl跨进程通信

    标题“android aidl跨进程通信”指的是通过AIDL在Android上进行不同进程间的数据交换和功能调用的过程。在Android中,每个应用默认运行在自己的进程中,当需要不同应用间共享数据或调用对方的功能时,就需要借助IPC...

    Androidaidl跨进程调用.zip

    - AIDL调用是异步的,这意味着调用方法不会立即返回结果,而是通过回调或者Future对象来获取结果。 - 跨进程调用会有一定的性能开销,因此应避免频繁的AIDL通信,优化数据传输。 7. **异常处理**: - 在跨进程...

    Android aidl 进程通信

    总之,Android AIDL是解决进程间通信问题的有效工具,它使得服务能够被不同应用访问,增强了Android系统的交互性和可扩展性。在实际开发中,理解并熟练掌握AIDL的使用,对于构建健壮、高效的Android应用至关重要。

    Android Aidl进程间通信,实现3个app共享一个服务

    AIDL(Android Interface Definition Language)是Android提供的一个工具,用于在不同进程间定义和实现接口,使得服务可以在多个应用之间共享。本教程将深入探讨如何使用AIDL来创建一个服务,供三个不同的应用程序...

    android aidl远程方法调用例子

    总结起来,AIDL是Android中实现跨进程通信的重要工具,它允许应用之间通过定义清晰的接口进行数据交换和服务调用,从而实现了进程间的协作。在实际开发中,理解并熟练掌握AIDL能够帮助我们构建更加健壮和可扩展的...

Global site tag (gtag.js) - Google Analytics