返回IBinder

时间:2018-09-06 07:07:59

标签: java android

嗨,我是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();
    } 

}

2 个答案:

答案 0 :(得分:0)

这是一个内部类,因此您可以轻松返回外部Service实例。您也可以将其设置为外部课程 从这里引用: IBinder details

答案 1 :(得分:0)

IBinder:

要创建绑定服务,必须定义指定客户端如何与服务通信的接口。服务和客户端之间的此接口必须是IBinder的实现,并且是您的服务必须从onBind()回调方法返回的接口。客户端收到IBinder后,它可以开始通过该界面与服务进行交互。

onBind():

当另一个组件想要与服务绑定(例如执行RPC)时,系统通过调用bindService()来调用此方法。在此方法的实现中,必须提供一个接口,客户端可以通过返回IBinder使用该接口与服务进行通信。您必须始终实现此方法。但是,如果您不想允许绑定,则应返回null。

有关更多信息,https://developer.android.com/reference/android/os/IBinder