zoukankan      html  css  js  c++  java
  • Android为TV端助力 浅谈Aidl 通讯机制

    服务端:

    首先是编写一个aidl文件,注意AIDL只支持方法,不能定义静态成员,并且方法也不能有类似public等的修饰符;AIDL运行方法有任何类型的参数和返回值,在java的类型中,以下的类型使用时不需要导入包(import),基本数据类型、String、Map、List.当然为了避免出错,建议只要使用了,就导入包。

    然后在服务端启动一个服务并注册,编写一个任意类实现AIDL文件生成的JAVA接口Stub!

    最后在service里面实例化你的任意类并且在onBind(Intent a)方法上面返回你任意类的对象!

    客户端:

    首先把你在服务端的aidl文件完整的复制过来一份,并且保证包名一样

    然后调用bindservice方法绑定你在服务端创建的方法mContext.bindService(intent, mServiceConnection, 0);

    其中mServiceConnection是重点:

    private ServiceConnection mServiceConnection = new ServiceConnection() {

    @Override
    public void onServiceConnected(ComponentName name, IBinder service) {//连接上服务器时调用
    mService = IRemoteService.Stub.asInterface(service);

    }

    @Override
    public void onServiceDisconnected(ComponentName name) {//没连上调用
    mService = null;
    }
    };

    其中mService就是服务端的aidl对象,我们可以通过它来给服务端的方法赋值

    其中的传的Intent要注意必须提供一个intent-filter来匹配请求是否合法,所以我们在客户端访问服务的时候,还必须传递包含了匹配action的Intent哦。

  • 相关阅读:
    Java面试题(转)
    哪种方式更适合在React中获取数据?
    vue学习之深入响应式原理
    还不会用FindBugs?你的代码质量很可能令人堪忧
    几道大数据面试题(转)
    【Medium翻译】Java抽象类有什么用?
    深入理解Kafka必知必会(上)
    (八十六)c#Winform自定义控件-表格优化(转载)
    IDEA 配置及常用快捷键
    Markdown 复杂公式&常用符号
  • 原文地址:https://www.cnblogs.com/xiaoxiaing/p/5342101.html
Copyright © 2011-2022 走看看