嗨,我是android新手,我需要知道下面有关IBinder的代码中到底发生了什么,为什么我们为此目的使用内部类。
public class MyRandomService extends Service {
private class LocalBinder extends Binder {
MyRandomService getService() {
return MyRandomService.this;
}
}
private LocalBinder localBinder = new LocalBinder();
@Override
public IBinder onBind(Intent intent) {
return localBinder;
}
@Override
public void onStart(Intent intent, int startId) {
super.onStart(intent, startId);
}
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
return super.onStartCommand(intent, flags, startId);
}
@Override
public void onDestroy() {
stop_random_number_generator();
}
}
答案 0 :(得分:0)
这是一个内部类,因此您可以轻松返回外部Service实例。您也可以将其设置为外部课程 从这里引用: IBinder details
答案 1 :(得分:0)
IBinder:
要创建绑定服务,必须定义指定客户端如何与服务通信的接口。服务和客户端之间的此接口必须是IBinder的实现,并且是您的服务必须从onBind()回调方法返回的接口。客户端收到IBinder后,它可以开始通过该界面与服务进行交互。
onBind():
当另一个组件想要与服务绑定(例如执行RPC)时,系统通过调用bindService()来调用此方法。在此方法的实现中,必须提供一个接口,客户端可以通过返回IBinder使用该接口与服务进行通信。您必须始终实现此方法。但是,如果您不想允许绑定,则应返回null。
有关更多信息,https://developer.android.com/reference/android/os/IBinder