1

我知道绑定服务仅在活动或任何组件需要它之前存在。我们必须从 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;
    }
}
}
4

1 回答 1

1

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

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

您不能直接调用 MyBinder 类,因为您不能直接访问服务类成员。由于 bindservice 提供了一个带有 binder 对象的回调,因此建议采用这种方法。

于 2015-09-26T04:22:46.153 回答