//定义一个IPerson.aidl文件
package com.example.service;
interface IPerson{
void setName(String name);
void setSex(String sex);
void setAge(int age);
String getPerson();
}
//创建PersonImpl.java
package com.example.service;
import android.os.RemoteException;
public class PersonImpl extends IPerson.Stub{
private String name,sex;
private int age;
@Override
public void setName(String name) throws RemoteException {
this.name=name;
}
@Override
public void setSex(String sex) throws RemoteException {
// TODO Auto-generated method stub
this.sex=sex;
}
@Override
public void setAge(int age) throws RemoteException {
// TODO Auto-generated method stub
this.age=age;
}
@Override
public String getPerson() throws RemoteException {
// TODO Auto-generated method stub
return "name="+name+",sex="+sex+",age="+age;
}
}
//服务类MyService.java
package com.example.service;
import android.app.Service;
import android.content.Intent;
import android.os.IBinder;
/**
* 实现一个绑定
* @author Administrator
*
*/
public class MyService extends Service{
private PersonImpl personImpl;
@Override
public void onCreate() {
// TODO Auto-generated method stub
super.onCreate();
System.out.println("onCreate。。。。");
}
@Override
public IBinder onBind(Intent intent) {
System.out.println("onBind。。。");
personImpl=new PersonImpl();
return personImpl;
}
@Override
public boolean onUnbind(Intent intent) {
System.out.println("onUnbind。。。");
return super.onUnbind(intent);
}
}
//在Activity中绑定和解除绑定
//绑定服务通常用于两个进程之间的通信
//事先设置好
mBound=false;//当前为非绑定状态
IPerson person;//要实现接口的方法
//服务连接对象
private ServiceConnection conn=new ServiceConnection(){
@Override
public void onServiceConnected(ComponentName name, IBinder service) {
// 绑定成功后服务会调用该方法,注意,解除绑定服务时不会调用
person= IPerson.Stub.asInterface(service);
mBound = true;
System.out.println(person);
}
@Override
public void onServiceDisconnected(ComponentName arg0) {
//服务异常终止时会调用
mBound = false;
}
};
//绑定Service
public void bindIntentServiceClick(View v){
Intent intent=new Intent(this,MyService.class);
//参数(intent,服务连接对象,绑定服务的标记)
bindService(intent, conn, Context.BIND_AUTO_CREATE);
}
//解除绑定绑定Service
public void unbindIntentServiceClick(View v){
//判断是否为绑定状态
if(mBound){
unbindService(conn);
mBound=false;
}
}