All Downloads are FREE. Search and download functionalities are using the official Maven repository.

dagger.android.AndroidInjector Maven / Gradle / Ivy

/*
 * Copyright (C) 2016 The Dagger Authors.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 * http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package dagger.android;

import dagger.BindsInstance;
import dagger.internal.Beta;

/**
 * Performs members-injection for a concrete subtype of a core Android type (e.g., {@link
 * android.app.Activity} or {@link android.app.Fragment}).
 *
 * 

Commonly implemented by {@link dagger.Subcomponent}-annotated types whose {@link * dagger.Subcomponent.Factory} extends {@link Factory}. * * @param a concrete subtype of a core Android type * @see AndroidInjection * @see DispatchingAndroidInjector * @see ContributesAndroidInjector */ @Beta public interface AndroidInjector { /** Injects the members of {@code instance}. */ void inject(T instance); /** * Creates {@link AndroidInjector}s for a concrete subtype of a core Android type. * * @param the concrete type to be injected */ interface Factory { /** * Creates an {@link AndroidInjector} for {@code instance}. This should be the same instance * that will be passed to {@link #inject(Object)}. */ AndroidInjector create(@BindsInstance T instance); } /** * An adapter that lets the common {@link dagger.Subcomponent.Builder} pattern implement {@link * Factory}. * * @param the concrete type to be injected * @deprecated Prefer {@link Factory} now that components can have {@link dagger.Component.Factory * factories} instead of builders */ @Deprecated abstract class Builder implements AndroidInjector.Factory { @Override public final AndroidInjector create(T instance) { seedInstance(instance); return build(); } /** * Provides {@code instance} to be used in the binding graph of the built {@link * AndroidInjector}. By default, this is used as a {@link BindsInstance} method, but it may be * overridden to provide any modules which need a reference to the activity. * *

This should be the same instance that will be passed to {@link #inject(Object)}. */ @BindsInstance public abstract void seedInstance(T instance); /** Returns a newly-constructed {@link AndroidInjector}. */ public abstract AndroidInjector build(); } }





© 2015 - 2025 Weber Informatics LLC | Privacy Policy