1.创建aidl文件
创建aidl.png2.编写aidl文件,定义方法,跟普通的接口方法一样
3.点击导航栏里面的Build----》Make Project
可以看到在 project目录下, app--》build--》generated--》source--》aidl生成一个文件,里面保存生成的代码
4.编写service
在onBind中返回自定义的Binderd对象,自定义的Binder类继承生成接口的内部类,自己实现接口的方法
service代码.png
5 绑定service
通过回调方法得到IMyAidlInterface对象,调用里面的方法,实现跨进程通信
val intent=Intent()
intent.component=ComponentName("com.example.administrator.aidldemo","com.example.administrator.aidldemo.MyService")
bindService(intent,object:ServiceConnection{
override fun onServiceConnected(name: ComponentName?, service: IBinder?) {
iMyAidlInterface = IMyAidlInterface.Stub.asInterface(service)
}
override fun onServiceDisconnected(name: ComponentName?){
}
},BIND_AUTO_CREATE)
附 manifest
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<service
android:name=".MyService"
android:enabled="true"
android:exported="true"
android:process=":message"
>
</service>
</application>
网友评论