Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/184.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 归还一只朱鹭_Java_Android - Fatal编程技术网

Java 归还一只朱鹭

Java 归还一只朱鹭,java,android,Java,Android,嗨,我是android新手,我需要知道下面突出显示的关于IBinder的代码中到底发生了什么,为什么我们要使用内部类来实现这个目的 public class MyRandomService extends Service { private class LocalBinder extends Binder { MyRandomService getService() { return MyRandomService.this; }

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

}

它是一个内部类,因此可以轻松返回外部服务实例。您可以将其设置为外部类 从这里开始:

IBinder:

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

onBind():

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

更多信息