gpt4 book ai didi

java - Java中 "asynchronous method"是什么意思?

转载 作者:行者123 更新时间:2023-11-30 07:16:27 25 4
gpt4 key购买 nike

我正在研究一个应用程序的 Android 计费示例。示例应用程序引用了异步方法。我在网上查了一下,似乎找不到一个好的定义,请有人帮忙举个例子。示例如下:

 // Start setup. This is asynchronous and the specified listener
// will be called once setup completes.

mHelper.startSetup(new IabHelper.OnIabSetupFinishedListener() {
public void onIabSetupFinished(IabResult result) {

是否是一个不立即返回结果的方法?

最佳答案

如果我没记错的话,你指的是这个方法startSetup接受final OnIabSetupFinishedListener 并据推测设置计费。

您似乎感到困惑的是,Java 的这个语法上相当晦涩的功能称为匿名内部类

让我尝试回答您的问题,以使其更容易:

Is it a method that does not immediately return a result?

是的,有点(它当然不会返回任何内容,因为它是一个 void 方法)。简而言之,它是一个接受接口(interface) OnIabSetupFinishedListener 实例的方法,并按 Javadoc 中所述异步执行其部分工作,并且不返回任何内容:

This will start up the setup process asynchronously.

因此,此方法与任何其他 void Java 方法类似。唯一的附加实现信息是在您传递给此方法的监听器和其他一些对象之间建立某种通信。

但是这种通信将在稍后的时间点发生,不是在您调用此方法时开始安装。因此,重要的是调用站点,即您将如何在自己的应用程序中调用此方法。希望这种情况发生在设置应用程序时,并且您需要让它快速运行,因此此方法提供了回调机制,并以同步方式尽快返回,而没有不必要的延迟。这意味着您的调用线程可以取得进展,并且当适当的事件发生时,您传递给此方法的监听器可以在稍后的其他线程中使用。

这种困惑的部分原因还在于匿名内部类的典型编码方式。因此,您的调用站点可能类似于 following :

mHelper.startSetup(new IabHelper.OnIabSetupFinishedListener() {
public void onIabSetupFinished(IabResult result) {
if (!result.isSuccess()) {
// Oh noes, there was a problem.
Log.d(TAG, "Problem setting up In-app Billing: " + result);
}
// Hooray, IAB is fully set up!
}
});

在这里,您直接在调用站点提供接口(interface) OnIabSetupFinishedListener 的匿名实现(无需实际创建实现该接口(interface)的单独类,而是使用类似 class MyListener Implements OnIabSetupFinishedListener)。

关于java - Java中 "asynchronous method"是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38315245/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com