如果下载失败,我正在查看一个负责从网站下载数据或从本地数据库获取数据的类。
我的问题是,因为在这种情况下,downloadListFromServer是一个异步调用,所以我们不会这样做.listener = listener ;?因为在初始调用使用侦听器之前可以再次调用该方法。在第一次下载之前基本上改变监听器中的引用可以使用它。
修改downloadListFromServer以接受侦听器并从getList传递它是不是更好?
注意代码被删除,所以即使它看起来像我们也不想在我们的情况下直接调用downloadListFromServer。
private MyListnernType listener;
public void getList(TextListType type, MyListnernType listener){
this.listener = listener; // is this bad?
downloadListFromServer(type); // uses
}
private void downloadListFromServer(final TextListType type){
Downloader.getTextList(type, new DownloadListener() {
@Override
public void downloadSucceeded( int statusCode, String response) {
listener.getTextListSucceeded(response);
}
});
}
};
答案 0 :(得分:1)
是的,这是一个坏主意。应该将侦听器作为参数传递给第二个方法。
如果您的对象必须下载多个文件并始终警告同一个侦听器,则将侦听器保持为字段是可以接受的。但是应该将侦听器传递给对象的构造函数,或传递给setListener()
方法,这将明确表示您不能为两个不同的消息传递两个不同的侦听器。