史上最適合新手的Dagger2教程(四)帶參注入

Dagger2系列教程目錄:

史上最適合新手的Dagger2教程(一)基本注入

史上最適合新手的Dagger2教程(二)對象注入

史上最適合新手的Dagger2教程(三)模型與單例

史上最適合新手的Dagger2教程(四)帶參注入

史上最適合新手的Dagger2教程(五)命名玻靡、限定與延時加載

前面我們講解了構造方法中不帶參數(shù)的各種注入方式腐缤,

這節(jié)課涕刚,我們來學習構造方法中帶參數(shù)的對象如何使用Dagger2注入诲祸。

· 常規(guī)實現(xiàn)

我們先不使用Dagger2,以常規(guī)的方式注入一個帶參構造的對象:

帶參構造類:

public class SellMoe {

    private int age;

    public SellMoe(int age) {
        this.age = age;
    }
     public String sellMoe() {
        return "我特么" + age + "歲了還是可愛得要死";
    }
}

常規(guī)調(diào)用:

public class MainActivity extends AppCompatActivity {
     @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        TextView textView = findViewById(R.id.textView);
        
        SellMoe sellMoe = new SellMoe(80);

        textView.setText(sellMoe.sellMoe());
    }
}

運行結果:

接下來我們使用Dagger2來注入它续担。

· Dagger2注入

下面所用到的注解,在上節(jié)課有詳細的說明,如果不熟練請回顧上一節(jié)愕掏。

Step1:創(chuàng)建帶參構造模型(@Module)

對于帶參構造的對象,必須使用@Module注入籽前;并且這個模型必須有一個帶參的構造方法亭珍。

@Module
public class SellMoeModule {
    private int age;
    public SellMoeModule(int age) {
        this.age = age;
    }
}

Step2:創(chuàng)建帶參提供者(@Provides)

除了提供帶參的對象的提供者以外,還要有提供參數(shù)的提供者枝哄,二者缺一不可

@Module
public class SellMoeModule {
    private int age;
     public SellMoeModule(int age) {
        this.age = age;
    }
     //提供參數(shù)的提供者
    @Provides
    public int ageProvider() {
        return age;
    }
     //提供對象的提供者
    @Provides
    public SellMoe sellMoeProvider(int age) {
        return new SellMoe(age);
    } 
}

傳參的事情交給提供者來完成肄梨。

Step3:創(chuàng)建注入器(@Component)

帶參的注入器必須指定使用的模型:

//指定模型
@Component(modules = SellMoeModule.class)
public interface SellMoeComponent {
    void inject(MainActivity mainActivity);
}

Step4:構建項目,生成注入器

反正養(yǎng)成習慣寫完注入器就Build一次就對了挠锥!

Step5:注入對象

使用帶參模型注入的時候众羡,就不能直接使用create()方法了,

和需要更改OkHttp3的參數(shù)時蓖租,需要使用OkHttpClient.Builder()一個道理粱侣,

這里也要使用Builder()傳入帶參的Module:

public class MainActivity extends AppCompatActivity {
     @Inject
    SellMoe sellMoe;
     @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        TextView textView = findViewById(R.id.textView);

        DaggerSellMoeComponent.builder().sellMoeModule(new SellMoeModule(80)).build().inject(this);

        textView.setText(sellMoe.sellMoe());
    }
}

以上就是帶參對象的注入過程。

但是話又說回來蓖宦,有時候一個對象齐婴,有帶參和不帶參兩個構建方法,這個時候怎么辦嘞稠茂?

下節(jié)課再講柠偶!

· 家庭作業(yè)

用Dagger2注入一個帶參數(shù)的杠精類,分別使用普通模式和單例模式:

public class GangJing {
    private int age;
    public GangJing(int age) {
        this.age = age;
    }
     public String gang() {
        return "我特么" + age + "歲了抬起杠來依然是個扛把子";
    }
}
最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末睬关,一起剝皮案震驚了整個濱河市诱担,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌电爹,老刑警劉巖蔫仙,帶你破解...
    沈念sama閱讀 206,126評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異丐箩,居然都是意外死亡摇邦,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,254評論 2 382
  • 文/潘曉璐 我一進店門雏蛮,熙熙樓的掌柜王于貴愁眉苦臉地迎上來涎嚼,“玉大人,你說我怎么就攤上這事挑秉》ㄌ荩” “怎么了?”我有些...
    開封第一講書人閱讀 152,445評論 0 341
  • 文/不壞的土叔 我叫張陵,是天一觀的道長立哑。 經(jīng)常有香客問我夜惭,道長,這世上最難降的妖魔是什么铛绰? 我笑而不...
    開封第一講書人閱讀 55,185評論 1 278
  • 正文 為了忘掉前任诈茧,我火速辦了婚禮,結果婚禮上捂掰,老公的妹妹穿的比我還像新娘敢会。我一直安慰自己,他們只是感情好这嚣,可當我...
    茶點故事閱讀 64,178評論 5 371
  • 文/花漫 我一把揭開白布鸥昏。 她就那樣靜靜地躺著,像睡著了一般姐帚。 火紅的嫁衣襯著肌膚如雪吏垮。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 48,970評論 1 284
  • 那天罐旗,我揣著相機與錄音膳汪,去河邊找鬼。 笑死九秀,一個胖子當著我的面吹牛遗嗽,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播鼓蜒,決...
    沈念sama閱讀 38,276評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼媳谁,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了友酱?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 36,927評論 0 259
  • 序言:老撾萬榮一對情侶失蹤柔纵,失蹤者是張志新(化名)和其女友劉穎缔杉,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體搁料,經(jīng)...
    沈念sama閱讀 43,400評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡或详,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,883評論 2 323
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了郭计。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片霸琴。...
    茶點故事閱讀 37,997評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖昭伸,靈堂內(nèi)的尸體忽然破棺而出梧乘,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 33,646評論 4 322
  • 正文 年R本政府宣布选调,位于F島的核電站夹供,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏仁堪。R本人自食惡果不足惜哮洽,卻給世界環(huán)境...
    茶點故事閱讀 39,213評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望弦聂。 院中可真熱鬧鸟辅,春花似錦、人聲如沸莺葫。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,204評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽徙融。三九已至洒缀,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間欺冀,已是汗流浹背树绩。 一陣腳步聲響...
    開封第一講書人閱讀 31,423評論 1 260
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留隐轩,地道東北人饺饭。 一個月前我還...
    沈念sama閱讀 45,423評論 2 352
  • 正文 我出身青樓,卻偏偏與公主長得像职车,于是被迫代替她去往敵國和親瘫俊。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 42,722評論 2 345

推薦閱讀更多精彩內(nèi)容