gpt4 book ai didi

java - Android 重定向(委托(delegate)指针)

转载 作者:行者123 更新时间:2023-12-02 12:23:39 24 4
gpt4 key购买 nike

我想从后台线程循环中调用不同的代码(回调)并使用该后台线程来执行工作。它类似于 C# 中的委托(delegate)。

public class test {
private boolean keepRunning;
private boolean messageReady;
private MyClass myClass;
void LongBackgroundWork(){
Thread thread = new Thread(new Runnable() {
@Override
public void run() {
while (keepRunning) {
if (messageReady){
myClass.callback(); // call different methods here
// to be decided at runtime and run on this worker thread
}
}
}
});
thread.start();
}
}

我想使用后台线程而不是 UI 线程。我想在 myClass 中设置回调来选择调用什么代码。在 C# 中,如何在 Java 中做到这一点很容易。我对Java没有太多经验,不明白该使用什么机制。我应该使用处理程序吗?处理程序可以在后台线程上运行代码吗?

最佳答案

我敢打赌,您希望有一种模式,其中发生事件或某些事件,并且您需要在某处启动代码块。

可以帮助您的模式可能是观察者 Wiki并开始参加 Activity 。如果您愿意,您也可以在这里查看这个问题:Delegate vs Callback in Java

就您而言,我认为您希望有人在消息准备好时负责您必须做的事情。因此,您要寻找的是在事件被读取(消息准备就绪)后执行操作的人。

Foo类为例,它是监听器的容器,也称为观察者,它将收到任何事件的通知。您可以在此处拥有某个对象的回调列表,该对象负责您的逻辑以执行下一步需要执行的操作。

然后您将拥有一个 Observable 对象或类,它会在收到通知时实现一些逻辑。然后,您可以通过实现所需的回调函数让各种类对象执行必要的逻辑。

示例:

// Observer
public class Foo {
// List of objects that implement Callbacks interface
private List<Callbacks> mList;
public Foo() {
// Initialize here
}
public void addListener(Callbacks cb) {
mList.add(cb);
}
public void notifyListeners() {
for ( Callback cb : mList) {
cb.onCallback();
}
}
// Public interface to be implemented by users
public interface Callback {
void onCallback();
}
}

然后让一个类实现这个对象,如果你愿意的话,你可以传递它。

// Bar implements Foo.Callback interface
public class Bar implements Foo.Callback {
public class Bar() {}

@Override
public void onCallback() {
// Perform logic here
}
}

最后,在代码中,您只需创建 Foo 对象,添加监听器,并在需要触发事件时通知它们。

关于java - Android 重定向(委托(delegate)指针),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45595131/

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