为什么我们使用另一个class 继承binder class 来访问BoundServices?
Why we use another class inheriting binder class to access BoundServices?
我知道绑定服务仅在 Activity 或任何组件需要它之前存在。
我们必须从 onBind 函数调用 MyLocalBinder class。
为什么会这样?
为什么不能直接调用呢?
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.
访问您的某些服务 class 功能的方法
如果您在应用程序之间使用活页夹 api 调用,这意味着您试图从您的应用程序使用远程功能。由于两个应用程序 运行 在它们自己的进程中,绑定器将像具有安全性的管道一样工作。
您不能直接调用 MyBinder class,因为您不能直接访问服务 class 成员。由于 bindservice 提供了一个带有 binder 对象的回调,因此建议遵循这种方法。
我知道绑定服务仅在 Activity 或任何组件需要它之前存在。 我们必须从 onBind 函数调用 MyLocalBinder class。 为什么会这样? 为什么不能直接调用呢?
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.
访问您的某些服务 class 功能的方法如果您在应用程序之间使用活页夹 api 调用,这意味着您试图从您的应用程序使用远程功能。由于两个应用程序 运行 在它们自己的进程中,绑定器将像具有安全性的管道一样工作。
您不能直接调用 MyBinder class,因为您不能直接访问服务 class 成员。由于 bindservice 提供了一个带有 binder 对象的回调,因此建议遵循这种方法。