android绑定远程服务以及android接口定义语言(aidl)
16lz
2021-12-23
package com.example.remote;import android.app.Service;import android.content.Intent;import android.os.Binder;import android.os.IBinder;import android.os.RemoteException;import android.widget.Toast;public class Myservice extends Service {@Overridepublic IBinder onBind(Intent intent) {// TODO Auto-generated method stubSystem.out.println("服务绑定");return new MiddlePerson();}@Overridepublic void onCreate() {// TODO Auto-generated method stubSystem.out.println("服务创建");super.onCreate();}@Overridepublic void onDestroy() {// TODO Auto-generated method stubSystem.out.println("服务结束");super.onDestroy();}public void methodInservice(String arr){System.out.println("我是远程服务方法,我被调用了");}private class MiddlePerson extends IMiddlePerson.Stub{@Overridepublic void call(String string) throws RemoteException {// TODO Auto-generated method stubmethodInservice(string);}}}
编写aidl接口 - JAVA基本数据类型不需要导入
- String,List,Map和CharSequence不需要导入
package com.example.remote; interface IMiddlePerson {void call(String string);}
其次在清单文件中声明服务:
二:编写调用远程服务的程序:
调用实现:
package com.example.bindremote;import com.example.remote.IMiddlePerson;import android.app.Activity;import android.content.ComponentName;import android.content.Intent;import android.content.ServiceConnection;import android.os.Bundle;import android.os.IBinder;import android.os.RemoteException;import android.view.Menu;import android.view.MenuItem;import android.view.View;public class MainActivity extends Activity {private IMiddlePerson im;private Myconn conn; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); } public void mystop(View vew){unbindService(conn);} public void bind(View vew){ Intent service=new Intent(); service.setAction("com.example.remote.Myservice"); conn=new Myconn(); bindService(service, conn, BIND_AUTO_CREATE); } public void call(View vew){ try {im.call("leigewudi");System.out.println(im);} catch (RemoteException e) {// TODO Auto-generated catch blocke.printStackTrace();} }public class Myconn implements ServiceConnection {@Overridepublic void onServiceConnected(ComponentName name, IBinder service) {// TODO Auto-generated method stubim=IMiddlePerson.Stub.asInterface(service);System.out.println("服务被调用了"+im);}@Overridepublic void onServiceDisconnected(ComponentName name) {// TODO Auto-generated method stubunbindService(conn);System.out.println("服务结束");}}}
实验结果:
更多相关文章
- Android(安卓)js和原生交互
- Android自定义控件
- 一个简单的例子让你彻底了解android 中Activity的生命周期
- MeidaProvider 流程学习笔记
- Android(安卓)WebView获取cookie
- android 沉浸式状态栏不会和虚拟重叠
- android调用系统添加联系人界面
- android 学习知识点累计
- Android(安卓)调用浏览器,打开网页