位置: 编程技术 - 正文
推荐整理分享Android---44---使用AIDL Service 实现跨进程调用Service(android使用方法),希望有所帮助,仅作参考,欢迎阅读内容。
文章相关热门搜索词:android+,android_main,android エロ,android エロ,android使用方法,android エロ,android使用教程,android+,内容如对您有帮助,希望把文章链接给更多的朋友!
为了实现跨进程通信(interprocess communication 简称 IPC),Android提供了AIDL Service。
AIDL 是一种IDL语言,用于生成可以在Android设备上两个进程之间进行通信的代码如果在一个进程中药调用另一个进程中对象的操作,就可以使用AIDL生成可序列化的参数。
AIDL是面向接口的
与绑定本地Service不同的是,本地Service的onBind方法会直接把IBinder对象本身传给客户端的ServiceConnection的onServiceConnected方法的第二个参数。但远程Service的onBind方法只是将Ibinder对象的代理传给客户端。
创建AIDL:
new -> file XXX.aidl
XXX.aidl里只是定义一个接口,语法与Java语法相 但存在几点差异:
1.AIDL定义接口的源代码必须以.aidl 结尾2.AIDL用到的数据类型,除了基本类型,String,List Map,CharSequence之外,其他类型全部需要导包。
将接口暴露给客户端:
定义好AIDL接口后,ADT工具会自动在工程gen目录下生成一个ICat.java接口,该接口里包含一个Stub内部类,给内部类实现了IBinder、ICat两个接口,这个Stub类将会作为远程Service的回调类----它实现了IBinder接口,因此可以作为Service的onBind方法的返回。
定义一个Service实现类,该Service的onBind方法所返回的IBinder对象应该是ADT所生成的ICat.Stub的子类的实例。
服务端的代码:
CatBinder类继承了ICat.Stub类,就是实现了ICat接口和IBinder接口,所以程序重写onBind方法时返回了该CatBinder的实例
客户端访问:
需要注意的是,不仅服务端需要AIDL接口,客户端同样需要这个接口,而且是一模一样的。由于看书的时候没仔细看,结果纠结了两个小时。。。
客户端代码:
Android 子线程 更新 UI 界面 总结 packagecom.jrhcode.morethreadtest;importjava.util.concurrent.Executors;importandroid.os.AsyncTask;importandroid.os.Bundle;importandroid.os.Handler;importandroid.app.Activity;importandroid.view.Menu;im
android布局layout中的一些属性 1、可以使某些资源文件或UI组件可重用includelayout=@layout/other/2、定义一个文本编辑框,使用绝对定位android:layout_x=dipandroid:layout_y=dip3、控件位置android:l
Android数据存储之文件 文件Android中对文件的操作和Java是一样的。Android系统中存储系统分为内部存储和外部存储两种内部存储空间RAM内存:运行内存,相当于电脑的内存。ROM
标签: android使用方法
本文链接地址:https://www.jiuchutong.com/biancheng/383317.html 转载请保留说明!友情链接: 武汉网站建设