Android : 在第一个 activity 中收到回调,而不是在第二个中

Android : callback received in first activity , not in second

假设我有一个非常简单的界面:

interface Result {
    fun success(data : String)
    fun onError(e : Exception) }

我有 MainActivity :

class MainActivity : AppCompatActivity(), Result {
}

和第二个 class - 让我们说:

class SecondActivity : AppCompatActivity(), Result {
}

两个活动的实现完全相同。但是,我只能在 Main Activity 中接收回调。当我启动第二个 activity 和 运行 操作时,我可以看到来自 MainActivity 的日志,但看不到来自 SecondActivity 的日志。知道这是为什么吗?

您从 MainActivity 启动的任务,您已将 this 传递给该任务,它是 MainActivity 实例中 Result 接口的实例,因此回调在 MainActivitys' 回调中收到。

如果您从 SecondActivity 启动相同的任务并传递 this 那么它将在 SecondActivity 的实例中引用 Result 接口的实例,然后你会在SecondActivity.

中得到回调

请记住,如果您返回 MainActivity,在从 SecondActivity 启动的任务完成之前,您可能会收到 NPE.

interfaceabstract不能有直接实例,class即implementextends他们会创建自己的实例,对于每个实例实施或扩展 class interfaceabstract class 的新实例将在实施 class.

的实例中创建