我目前正在使用第三方库以异步方式加载图像和数据。 我将一个监听器传递给该方法,当loading \ download完成后,一个事件被传递给我的监听器,我开始使用他。例如:
getMainDownloader.getImagesLoader().loadImages(new IListener() {
@Override
public void loadingCompleted() {
//calling methods that uses this asset
method1();
method2();
}
}, ImagesList.get(0), ImagesList.get(3),ImagesList.get(5));
监听器接口:
public static interface IListener {
public void loadingCompleted();
}
在我的代码中,我有很多地方可以在上面下载这些资源,并调用不同的方法 - method5(),method12()
...在loadingCompleted()
上,所以我复制上面的代码,每次更改创建重复代码的方法。
是否有技术设置一种方法来加载这些资产?一些方法如何传递方法(method1()...)我希望在loadingCompleted()
中调用?
答案 0 :(得分:0)
您可以使用“真实”或嵌套类,而不是使用匿名类:
private static class MultiImagesListener implements IListener() {
private final String imageId;
public MultiImagesListener (String imageId) {
this.imageId = imageId;
}
@Override
public void loadingCompleted() {
// use this.imageId to decide which methods to call...
if (IMG_ID1.equals(imageId)) {
method1();
method13();
method27();
// ...
}
}
每次将侦听器的实例传递给loadImages
- 方法时,都应该将另一个参数传递给构造函数,以便区分侦听器实例:
getMainDownloader.getImagesLoader().loadImages(new MultiImagesListener(IMG_ID1);
getMainDownloader.getImagesLoader().loadImages(new MultiImagesListener(IMG_ID2);