为什么我们使用另一个继承binder类的类来访问BoundServices?

时间:2015-09-26 04:13:25

标签: 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) {

    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;
    }
}
}

1 个答案:

答案 0 :(得分:0)

如果您在同一个应用程序中使用活页夹调用,那么它是一种从其他组件(如活动)访问某些服务类功能的方法。

如果您在应用程序之间使用binder api调用,则意味着您尝试使用应用程序中的远程功能。由于两个应用程序在自己的进程中运行,因此绑定器将像一个具有安全性的管道。

您无法直接调用MyBinder类,因为您无法直接访问服务类成员。由于bindservice使用binder对象提供回调,因此建议遵循此方法。