因此,我正在将JavaFX任务用于从在线服务获取数据的各种方法中-这会花费一些时间,所以我不希望UI冻结。
为完成任务,我为每个任务创建了一个单独的类,以供应用程序中的其他类调用。
但是,我想从在线服务中获得许多不同类型的内容,并且我不想为每个类创建一个新的类。我在网上看到的所有Tasks实现都将它们作为类。
我可以有一个包含许多任务的“ NetworkTasks”类吗?与许多单独的Task类文件相比,这将更加整洁和易于使用。
编辑:Task类的示例。当使用返回名称列表的外部网络类给定名称时,它将查找用户名列表。这可能会花费一些时间,因此如果它不是Task,则会冻结UI
public class NameLookupTask extends Task<ArrayList<Label>> {
public UsernameSearchTask(NetworkClient client, String name) {
this.client = client;
this.name= name;
}
@Override
protected ArrayList<Label> call() throws Exception {
String[] userMessages;
userMessages = client.getMessages().getName();
System.out.println(userMessages.length);
ArrayList<Label> newNames= new ArrayList();
if (userMessages.length != 0) {
for (int i = 0; i < userMessages.length; i++) {
Label newName= new Label(name);
newMessages.add(newMessage);
updateProgress(i, userMessages.length);
}
} else {
this.cancel(true);
}
return newNames;
}
}
我希望有多个这样的任务,但是对于其他数据,只需获取数据并转换为UI元素即可。可以全部放在一个类文件中吗?