Aidl传递参数类型
1.基本数据类型(除short类型)
2.String、charSequence
3.List,map
4.parcelable
服务端:
第1步:定义一个*.aidl文件,然后 make project
interface IMyAidlInterface {
String getName();
}
第2步:定义一个自己的service
public class MyService extends Service
{
public MyService()
{
}
@Override
public IBinder onBind(Intent intent)
{
return new MyBinder();
}
class MyBinder extends IMyAidlInterface.Stub
{
@Override
public String getName() throws RemoteException
{
return "test";
}
}
}
第3步:记得注册服务
<service android:name=".MyService">
<intent-filter>
<action android:name="com.example.calculate.CalculateService" />
</intent-filter>
</service>
这样服务端就好了,下面客户端
aidl位置要保持一致,客户端和服务端aidl包名一定是一样的
客户端使用service
Intent intent=new Intent("com.luo.mytaobao");
intent.setAction("com.example.calculate.CalculateService");
intent.setPackage("com.luo.mytaobao");
bindService(intent, new ServiceConnection()
{
@Override
public void onServiceConnected(ComponentName name, IBinder service)
{
iMyAidlInterface = IMyAidlInterface.Stub.asInterface(service);
}
@Override
public void onServiceDisconnected(ComponentName name)
{
}
}, BIND_AUTO_CREATE);
}
public void onClick(View view)
{
try
{
Toast.makeText(MainActivity.this, iMyAidlInterface.getName(), Toast.LENGTH_SHORT).show();
}
catch (RemoteException e)
{
e.printStackTrace();
}
}