如何避免两个类之间的循环依赖?

时间:2013-02-22 08:56:01

标签: java android dependency-injection circular-dependency

我有两个类 - 一个定义BaseActivity(应用程序中所有活动的全局父级),另一个是AsyncTask类,我在其中定义了常见的网络操作。但我有下一个问题。 AsyncTask方法中名为RestfulNetworkTasks的{​​{1}}类必须调用onPostExecute()类中定义的UpdateCurrentActivityAfterNetworkOperation(),但BaseActivity类也必须创建实例BaseActivity。这是代码,清楚地说明了这个问题。

RestfulNetworkTasks

如您所见,我在RestfulNetworkTasks和BaseActivity类之间存在循环依赖关系,这可能会导致构造函数的无限链调用。

问题如何重构此设计以避免这种情况?

2 个答案:

答案 0 :(得分:3)

AsyncTask永远都会从一个Activity调用,所以为什么不把它作为一个Constructor参数传递呢?

RestfulNetworkTasks.java:

private BaseActivity activity;

public RestfulNetworkTasks(BaseActivity activity){
    this.activity = activity;
}

BaseActivity.java:

new RestfulNetworkTasks(this).execute();

答案 1 :(得分:1)

你不应该以那种方式创建活动

BaseActivity instance_Activity = new BaseActivity();

活动由系统管理