简体   繁体   中英

Why this error showFound a dependency cycle in dagger 2

Error as below

Error:(32, 26) error: Found a dependency cycle: com.d2u.android.data.network.LoopJNetworkManager is injected at com.d2u.android.di.module.ApplicationModule.provideNetworkManager(loopJNetworkManager) com.d2u.android.data.network.LoopJNetworkManager is injected at com.d2u.android.data.network.LoopzPostRequestHandler.(…, loopJNetworkManager) com.d2u.android.data.network.LoopzPostRequestHandler is injected at com.d2u.android.di.module.ApplicationModule.provideLoopzPostHandler(loopzPostRequestHandler) com.d2u.android.data.network.RequestHandlerHelper is provided at com.d2u.android.di.component.ApplicationComponent.getRequestHandlerHelper()

@PerActivity
public interface RequestHandlerHelper {

    LoopzPostRequestHandler getPostHandler();

}``
@Singleton
public class LoopzPostRequestHandler implements RequestHandlerHelper {

    private final Context context;
    LoopJNetworkManager loopJNetworkManager;


    @Inject
    LoopzPostRequestHandler(@ApplicationContext Context context, LoopJNetworkManager loopJNetworkManager) {
        this.context = context;
        this.loopJNetworkManager = loopJNetworkManager;
    }

    public void hitApiPostMethod(final String requestUrl, final JSONObject requestParams, final ApiCallbackManager onUpdateResponse, final int requestCode) {
        if (requestParams != null)
            Logger.LogError("REQUEST_" + requestCode, requestParams.toString());

        StringEntity stringEntity = null;
        try {
            stringEntity = new StringEntity(requestParams.toString());
        } catch (Exception e) {
            e.printStackTrace();
        }
        AsyncHttpClient client = loopJNetworkManager.getAsyncHttpClient();
        Logger.LogError("REQUEST_URL...", ApiRequestConstant.BASE_URL + requestUrl);
        client.post(context, ApiRequestConstant.BASE_URL + requestUrl, stringEntity, "application/json", new JsonHttpResponseHandler() {

            @Override
            public void onSuccess(int statusCode, Header[] headers, JSONObject response) {
                super.onSuccess(statusCode, headers, response);
                Logger.LogError("response...", response.toString());
                Logger.LogError("Header...", "  " + headers);

            }

            @Override
            public void onFailure(int statusCode, Header[] headers, String response, Throwable throwable) {
                super.onFailure(statusCode, headers, response, throwable);


            }

            @Override
            public void onFailure(int statusCode, Header[] headers, Throwable throwable, JSONObject errorResponse) {
                super.onFailure(statusCode, headers, throwable, errorResponse);

            }
        });
    }

    @Override
    public LoopzPostRequestHandler getPostHandler() {
        return this;
    }
}
@Singleton
@Component(modules = ApplicationModule.class)
public interface ApplicationComponent {
    void inject(D2UApplication app);

    @ApplicationContext
    Context context();

    Application application();
    PreferenceHelper getPreferenceHelper();
//    LoopJNetworkManager getNetWorkManager();
    RequestHandlerHelper getRequestHandlerHelper();

}

@Module
public class ApplicationModule {

    private final Application mApplication;

    public ApplicationModule(Application application) {
        mApplication = application;
    }

    @Provides
    @ApplicationContext
    Context provideContext() {
        return mApplication;
    }

    @Provides
    Application provideApplication() {
        return mApplication;
    }

//    @Provides
//    @DatabaseInfo
//    String provideDatabaseName() {
//        return AppConstants.DB_NAME;
//    }
//
//    @Provides
//    @ApiInfo
//    String provideApiKey() {
//        return BuildConfig.API_KEY;
//    }

    //    @Provides
//    @PreferenceInfo
//    String providePreferenceName() {
//        return PreferenceConstant.PREF_NAME;
//    }
//
//
//
    @Provides
    @Singleton
    PreferenceHelper providePreferencesHelper(AppPreferenceHelper appPreferencesHelper) {
        return appPreferencesHelper;
    }

    @Provides
    @Singleton
    LoopJNetworkManager provideNetworkManager(LoopJNetworkManager loopJNetworkManager) {
        return loopJNetworkManager;
    }

    @Provides
    @Singleton
    RequestHandlerHelper provideLoopzPostHandler(LoopzPostRequestHandler loopzPostRequestHandler) {
        return loopzPostRequestHandler;
    }
}

it would appear that this provider:

@Provides
@Singleton
LoopJNetworkManager provideNetworkManager(LoopJNetworkManager loopJNetworkManager) {
    return loopJNetworkManager;
}

...depends on an instance of the type it's meant to produce, which cannot be satisfied.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM