Android 为什么我们使用另一个继承binder类的类来访问BoundServices?
我知道绑定服务只在活动或任何组件需要它之前有效。 我们必须从onBind函数调用MyLocalBinder类。 为什么会这样? 为什么我们不能直接叫它Android 为什么我们使用另一个继承binder类的类来访问BoundServices?,android,android-service,android-binder,Android,Android Service,Android Binder,我知道绑定服务只在活动或任何组件需要它之前有效。 我们必须从onBind函数调用MyLocalBinder类。 为什么会这样? 为什么我们不能直接叫它 public class MyService extends Service { private final IBinder myBinder = new MyLocalBinder(); public MyService() { } @Override public IBinder onBind(Intent intent) {
public class MyService extends Service {
private final IBinder myBinder = new MyLocalBinder();
public MyService() {
}
@Override
public IBinder onBind(Intent intent) {
return myBinder;
}
public String getCurrentTime(){
SimpleDateFormat df = new SimpleDateFormat("HH:mm:ss", Locale.UK);
return (df.format(new Date()));
}
public class MyLocalBinder extends Binder{
MyService getService(){
return MyService.this;
}
}
}
如果您在同一应用程序中使用绑定器调用,那么这是一种从其他组件(如activity)访问某些服务类功能的方法 如果在应用程序之间使用绑定器api调用,这意味着您试图从应用程序使用远程功能。由于两个应用程序在各自的进程中运行,所以binder的作用就像一个具有安全性的管道
您不能直接调用MyBinder类,因为您不能直接访问服务类成员。由于bindservice提供了一个带有binder对象的回调,因此建议采用这种方法。但是为什么我们要使用MyLocalBinder类来使用该功能呢?为什么我们不能直接访问服务?我们总是可以创建服务的对象,在主活动中使用它,但是要调用绑定的服务,是否需要调用MyLocalBinder类?服务是一个android应用程序组件。您不应创建服务、活动、接收者等对象。。。Android UI框架将在您调用bindservice后启动活动。如果您手动创建这些类对象,这就像在代码中引入内存泄漏一样。此外,该框架将失去对这些组件生命周期的控制。