1.在服务端创建AIDL文件
2.修改默认接口中方法,修改完之后Make Project(锤子),如图:
interface MyAIDL {
/**
* Demonstrates some basic types that you can use as parameters
* and return values in AIDL.
*/
String getName();
int age();
}
3.建立一个MyService类 继承 Service,并且在清单文件加入AIDL的action
<service
android:name=".MyService"
android:enabled="true"
android:exported="true">
<intent-filter>
<action android:name="com.example.p7.MyAIDL"/>
</intent-filter>
</service>
public class MyService extends Service {
public MyService() {
}
@Override
public IBinder onBind(Intent intent) {
return aidl;
}
public MyAIDL.Stub aidl = new MyAIDL.Stub() {
@Override
public String getName() throws RemoteException {
return "李小强";
}
@Override
public int age() throws RemoteException {
return 50;
}
};
}
此时,服务端的Model已经配置完成了。
1.把这个文件从服务端 copy过来锤一下
public class MainActivity extends AppCompatActivity {
private MyAIDL myAIDL;
private ServiceConnection serviceConnection = new ServiceConnection() {
@Override
public void onServiceConnected(ComponentName name, IBinder service) {
myAIDL = MyAIDL.Stub.asInterface(service);
try {
Toast.makeText(MainActivity.this, myAIDL.age()+"...."+myAIDL.getName(), Toast.LENGTH_SHORT).show();
} catch (RemoteException e) {
e.printStackTrace();
}
}
@Override
public void onServiceDisconnected(ComponentName name) {
myAIDL = null;
}
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Intent intent = new Intent();
intent.setAction("com.example.p7.MyAIDL");
intent.setPackage("com.example.p7");
bindService(intent,serviceConnection,Service.BIND_AUTO_CREATE);
}
}