日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) >

google四件套之Dagger2

發(fā)布時(shí)間:2024/1/23 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 google四件套之Dagger2 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

前言
網(wǎng)上都說(shuō)Dagger2是比較難上手的,我在看了大量資料和使用時(shí)也遇到了很多不懂或者模糊的知識(shí)點(diǎn),而且大部分博客資料都比較古老。突然有那么一瞬間,突然明白了所以然,故總結(jié)了4篇文章。話說(shuō)在java中使用還是很繁瑣的,不要怕帶你真正上手,并運(yùn)用到我們的Android項(xiàng)目中去。

本次Dagger2講解總共分4篇:
1、Dagger2基礎(chǔ)知識(shí)及在Java中使用(1)
2、Dagger2基礎(chǔ)知識(shí)及在Java中使用(2)
3、Dagger2進(jìn)階知識(shí)及在Android中使用
4、Dagger2華麗使用在MVP框架中

首先簡(jiǎn)單申明下,Dagger2的好處不是本文的重點(diǎn)。大家可以自行百度。Dagger2是依賴注解框架,像我們之間的butterknife也是這樣的框架,想這樣的框架依賴一般都有2行。第二行是以annotationProcessor開頭的。這其實(shí)是apt的工具,而且這樣的依賴注解框架不會(huì)影響性能(不是反射機(jī)制),在編譯的時(shí)候,apt把要用的代碼生成。所以大可放心使用
再舉我理解的例子(大家不要全信,哈哈稍微不恰當(dāng)):@Component相當(dāng)于一個(gè)注射器(記住是接口);@Module相當(dāng)于注射液,就是數(shù)據(jù)源(記住這里是類或者抽象類),此時(shí)要把注射液放入指定哪個(gè)注射器如:@Component( modules = … );@Inject 相當(dāng)于標(biāo)注被注射體。

之后的講解都是走完簡(jiǎn)單的流程,實(shí)現(xiàn)功能,然后講大概理解。貼在博客上的代碼,可能會(huì)省略部分代碼,便于理解。github上的Demo及注釋,非常詳細(xì),接近完美0-0#
如果是完全沒了解過(guò),關(guān)于Dagger一些標(biāo)注的具體介紹和理解,推薦這里有3篇介紹標(biāo)注的意思和怎么工作的

首先添加依賴
implementation 'com.google.dagger:dagger:2.24'
annotationProcessor "com.google.dagger:dagger-compiler:2.24"
1
2

1、@Inject & @Component 的簡(jiǎn)單使用(不帶@Module)
首先隨便定義個(gè)類:Person,無(wú)參構(gòu)造方法用@Inject標(biāo)注:

public class Person {
? ? @Inject
? ? public Person() {

? ? }
}
1
2
3
4
5
6

然后定義我們的 Component(這里稍微提一下,如果一個(gè)頁(yè)面定義多個(gè)Component,你build的時(shí)候報(bào)錯(cuò),是不是)
這里的命名規(guī)則最好是以我們頁(yè)面類名+Component,這樣比較清晰。用@Component標(biāo)注,里面有個(gè)void方法,方法名隨意定,建議用inject最好,當(dāng)然也是清晰,參數(shù)是我們需要依賴注解的頁(yè)面:
@Component
public interface AstudyActivityComponent {
? ? void injectTo(AstudyActivity astudyActivity);
}
1
2
3
4
做好上面步驟后,點(diǎn)開studio里build標(biāo)簽下的Make Project。讓apt幫我們生成代碼,一般生成代碼為Dagger+你定義Component的類名。

之后這個(gè)步驟不再重復(fù),就是你寫完準(zhǔn)備代碼的時(shí)候一定要讓apt生成代碼,Make Project下

然后在我們的Activity里:

public class AstudyActivity extends BaseActivity {
? ? @Inject
? ? Person person;
? ??
? ? @Override
? ? //這里是我封裝的onCreate,省略部分代碼,只為理解,之后都請(qǐng)忽略!
? ? protected void processLogic() {
? ? ? ? //第一種
? ? ? ? DaggerAstudyActivityComponent.create().injectTo(this);
? ? ? ? //第二種
? ? ? ? //DaggerAstudyActivityComponent.builder().build().injectTo(this);
? ? }
}
1
2
3
4
5
6
7
8
9
10
11
12
13
在我們的Activity里build下我們的Component,然后注冊(cè)在我們的Activity里,就可以使用通過(guò)我們的@Inject使用我們的person了。
這里初始化有2種:
1、DaggerAstudyActivityComponent.create().injectTo(this);
2、DaggerAstudyActivityComponent.builder().build().injectTo(this); 這個(gè)使用module傳值一定要使用

那么一個(gè)簡(jiǎn)單的使用就實(shí)現(xiàn)了,這里忽略了new的過(guò)程,從這個(gè)過(guò)程就知道他解耦的實(shí)現(xiàn)了。

簡(jiǎn)單使用大致步驟( 看懂請(qǐng)略過(guò) ):
第一步:用Inject標(biāo)注,告訴dagger2可以實(shí)例化這個(gè)類,如:Person
第二步:使用注解Component,表示要將依賴注入到AstudyActivity里
第三步:使用android studio build下的Make Project生成代碼,使他自動(dòng)生成DaggerComponent生成的類,類名是:Dagge+我們定義的Component的名字

2、帶@Module的使用
為什么會(huì)有module的概念,比如上面的Person的構(gòu)造方法可以用@Inject標(biāo)注,但是引入的第三方庫(kù)可是沒有辦法加的,所以這里使用@Module可以解決這個(gè)問(wèn)題。
這里我們定義個(gè)Human,假裝他是第三方類庫(kù),里面沒有使用@Inject

public class Human {
? ? public Human() {

? ? }
}
1
2
3
4
5

接下的步驟先定義我們的數(shù)據(jù)源Module,也就是先定義初始化的地方,之前Person的構(gòu)造方法是用@Inject。首先命名規(guī)則最好加上Module,用@Module標(biāo)注。然后里面定義個(gè)方法,用 @Provides標(biāo)注。返回值為我們需要初始化的類,方法名最好是以Provides結(jié)尾。其實(shí)這里可以定義多個(gè)方法,后面說(shuō)

@Module
public class BstudyActivityModule {
? ? @Provides
? ? Human humanProvides(){
? ? ? ?return new Human();
? ? }
}
1
2
3
4
5
6
7

然后是我們的Component。這里與之前不同的是(modules = BstudyActivityModule.class),這就相當(dāng)于把注射液放進(jìn)注射器。這里可以有多個(gè)Module,后面說(shuō)

@Component(modules = BstudyActivityModule.class)
public interface BstudyActivityComponent {
? ? void injectTo(BstudyActivity bstudyActivity);
}
1
2
3
4
Make Project后,在Activity里操作與之前一模一樣。

帶Module使用大致步驟( 看懂請(qǐng)略過(guò) )
1、假設(shè)Human不可隨意更改,沒有@Inject標(biāo)注(第三方類庫(kù),不是你項(xiàng)目里的代碼肯定沒有@Inject)用@module標(biāo)注BstudyActivityModule,用@Provides標(biāo)注方法的返回值就是我們需要inject的類型
2、編寫Component接口使用@Component標(biāo)注這個(gè)接口,并使用modules=的方法鏈接上第一步中編寫的Module類;
3、接下來(lái)就和AstudyActivity中的使用方式一樣了

3、通過(guò)Module傳參
這個(gè)其實(shí)不重要,重要的引出4,5的概念。明白這步,后面才好理解。
首先我們假設(shè)2個(gè)類,女人類,和靈魂類:且靈魂類有個(gè)錢的屬性。靈魂類又是女人的屬性。靈魂類如下:

public class Soul {
? ? private int money;
? ? public Soul() {

? ? }
? ? public int getMoney() {
? ? ? ? return money;
? ? }
? ? public void setMoney(int money) {
? ? ? ? this.money = money;
? ? }
}
1
2
3
4
5
6
7
8
9
10
11
12
女人如下:

public class Woman {
? ? private Soul soul;

? ? public Soul getSoul() {
? ? ? ? return soul;
? ? }

? ? public Woman(Soul soul) {
? ? ? ? this.soul = soul;
? ? }
}
1
2
3
4
5
6
7
8
9
10
11

首先還是定義我們的Module先。既然可以傳參,當(dāng)然是有個(gè)money的屬性。最終我們依賴注解是要使用Woman類。我們的providesWoman方法用@Provides標(biāo)注,這個(gè)時(shí)候他回去找Soul的初始化,先通過(guò)@Provides去找Soul。這個(gè)時(shí)候找到了providesSoul。這樣就形成了女人類。假如這個(gè)時(shí)候沒有providesSoul。他會(huì)去找Soul類里有沒有用@Inject標(biāo)注的構(gòu)造函數(shù)。如果還沒有,那么不好意思。出錯(cuò)

@Module
public class CstudyModule {
? ? private int money;
? ??
? ? public CstudyModule(int money) {
? ? ? ? this.money = money;
? ? }

? ? @Provides
? ? Soul providesSoul() {
? ? ? ? Soul soul = new Soul();
? ? ? ? soul.setMoney(this.money);
? ? ? ? return soul;
? ? }

? ? @Provides
? ? Woman providesWoman(Soul soul) {
? ? ? ? return new Woman(soul);
? ? }
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
接下來(lái)是Component,沒有變化

@Component(modules = CstudyModule.class)
public interface CstudyActivityComponent {
? ? void injectTo(CstudyActivity cstudyActivity);
}
1
2
3
4
Activity有些許變化,當(dāng)然是傳參了。我們給女人的靈魂傳了100塊,對(duì),女人只值100塊!

public class CstudyActivity extends BaseActivity {
? ? @Inject
? ? Woman woman;
? ? @Override
? ? protected void processLogic() {
? ? ? ? DaggerCstudyActivityComponent.builder()
? ? ? ? ? ? .cstudyModule(new CstudyModule(100))
? ? ? ? ? ? .build().injectTo(this);
? ? }
}
1
2
3
4
5
6
7
8
9
10
注意點(diǎn)( 看懂請(qǐng)略過(guò) ):
在Module的構(gòu)造函數(shù)帶有參數(shù)且參數(shù)被使用的情況下,所生產(chǎn)的Component類就沒有create()方法了。
在這里的module如果沒有providesSoul()方法的話,還有一種情況只要在Soul的構(gòu)造方法有@Inject也是可行的。

4、使用@Component.Builder(需先了解 3、通過(guò)Module傳參)
我們把3、通過(guò)Module傳參apt生成的代碼點(diǎn)開DaggerCstudyActivityComponent;看下圖是不是發(fā)現(xiàn)了一個(gè)Builder類,這是apt幫我們自動(dòng)生成的,我們當(dāng)然也能自己實(shí)現(xiàn)


還是以3、通過(guò)Module傳參的例子,我們不用系統(tǒng)幫我們生成的Builder,自己定義。前面的步驟都一樣,直接來(lái)看我們的Component。
自己定義個(gè)接口類Builder,并用@Component.Builder標(biāo)注里面有2個(gè)方法:

方法一:是返回值Builder的方法,這里如果傳module就會(huì)以我們傳的為主,否則他會(huì)幫我們生成一個(gè)money為0的module。當(dāng)然你也隨意傳數(shù)據(jù)類型,只不過(guò)無(wú)效。可以試試,
方法二:是返回值為當(dāng)前Component的方法,方法名其實(shí)都可以自定義,當(dāng)最好以規(guī)范為主,用習(xí)慣了就明白了
@Component(modules = CstudyModule.class)
public interface DstudyActivityComponent {
? ? void injectTo(DstudyActivity dstudyActivity);
? ??
? ? @Component.Builder
? ? interface Builder {
? ? ? ? Builder cstudyModule(CstudyModule cstudyModule);
? ? ? ? DstudyActivityComponent build();
? ? }
}
1
2
3
4
5
6
7
8
9
10

Activity里使用是一樣的。只不過(guò)我們把系統(tǒng)自動(dòng)幫我們生成的,自己去寫了而已。還是貼下Activity代碼吧

public class DstudyActivity extends BaseActivity {
? ? @Inject
? ? Woman dWoman;
? ? @Override
? ? protected void processLogic() {
? ? ? ? DaggerDstudyActivityComponent.builder()
? ? ? ? ? ? .cstudyModule(new CstudyModule(100))
? ? ? ? ? ? .build().injectTo(this);
? ? }
}
1
2
3
4
5
6
7
8
9
10
大致理解和總結(jié)為( 看懂請(qǐng)略過(guò) ):
通過(guò)我們cstudy的內(nèi)容,你可以點(diǎn)開cstudyModule查看源碼,可以看到有個(gè)Builder cstudyModule(CstudyModule cstudyModule){}。這是dagger2自動(dòng)生成的(你還可以通過(guò),app/build/generated/source/apt/debug/你的包名/DaggerAppComponent.java 目錄下找到)

所以@Component.Builder的用法,用module傳參的例子。其他都不用變,要變的是Component,定義個(gè)Builder并用@Component.Builder標(biāo)注。這里有2個(gè)方法:

方法一:是返回值Builder的方法,這里如果傳module就會(huì)以我們傳的為主,否則他會(huì)幫我們生成一個(gè)money為0的module。當(dāng)然你也隨意傳數(shù)據(jù)類型,只不過(guò)無(wú)效。可以試試
方法二:是返回值為當(dāng)前Component的方法,方法名其實(shí)都可以自定義,當(dāng)最好以規(guī)范為主,用習(xí)慣了就明白了

5、使用@BindsInstance(需先了解 4、使用@Component.Builder)
這個(gè)時(shí)候你又說(shuō)了,傳參,我們總是要new CstudyModule(100)。本來(lái)說(shuō)Dagger2在使用的時(shí)候省略new的過(guò)程,解耦。但這里還要new,很low是不是。不急不急,強(qiáng)大的google把一切都想好了。這個(gè)時(shí)候遇到一個(gè)新的標(biāo)注@BindsInstance。
@BindsInstance 大致這里可以理解為幫我們省去寫類的構(gòu)造方法,而直接去賦值

省掉構(gòu)造方法,那么當(dāng)然是首先改我們的Module。我們?nèi)サ鬗odule的構(gòu)造方法及money成員變量屬性,把money加到providesSoul里成型參。看到這里,這里又可理解為@BindsInstance 其實(shí)去找@Provides標(biāo)記的方法的參數(shù),假如類型一致就去初始化

@Module
public class EstudyModule {
? ? @Provides
? ? Soul providesSoul(int money) {
? ? ? ? Soul soul = new Soul();
? ? ? ? soul.setMoney(money);
? ? ? ? return soul;
? ? }

? ? @Provides
? ? Woman providesWoman(Soul soul) {
? ? ? ? return new Woman(soul);
? ? }
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14

然后是修改的Component,改完Module,當(dāng)然是modules = EstudyModule.class。這些我就忽略了,看了上面的步驟你也明白,我就直接說(shuō)關(guān)鍵地方了。用@BindsInstance標(biāo)注我們返回值為Builder的方法。里面的參數(shù)改成我們的int Money。當(dāng)然改成我們用@Provides標(biāo)注的類型其實(shí)都可以,只不過(guò)這里你如果改成Soul soul,當(dāng)然你初始化還是要傳new Soul。過(guò)程就是這個(gè)過(guò)程

@Component(modules = EstudyModule.class)
public interface EstudyActivityComponent {
? ? void injectTo(EstudyActivity estudyActivity);
? ??
? ? @Component.Builder
? ? interface Builder {
? ? ? ? @BindsInstance
? ? ? ? Builder initMoney(int money);
? ? ? ? EstudyActivityComponent build();
? ? }
}
1
2
3
4
5
6
7
8
9
10
11

最后是我們的Activity

public class EstudyActivity extends BaseActivity {
? ? @Inject
? ? Woman woman;
? ? @Override
? ? protected void processLogic() {
? ? ? ? DaggerEstudyActivityComponent.builder()
? ? ? ? ? ? .initMoney(100)
? ? ? ? ? ? .build().injectTo(this);
? ? }
}
1
2
3
4
5
6
7
8
9
10
看到這里,是不是覺得Dagger2還比較有意思。更有意思的在后面。當(dāng)然也越來(lái)越繞了,但是你得興奮起來(lái),精髓啊。


6、Component依賴Component,使用dependence
這里我們以Activity和Fragment為例。假設(shè)我們?cè)貯ctivity依賴注入Human類,此時(shí)在Fragment里使用
先看定義Module,和之前一樣,沒什么區(qū)別

@Module
public class FstudyActivityModule {
? ? @Provides
? ? Human providesHuman() {
? ? ? ? return new Human();
? ? }
}
1
2
3
4
5
6
7

再建ActivityComponent當(dāng)然這里,你也可以加上void inject(FstudyActivity fstudyActivity)。重要一點(diǎn)是我們要把依賴注入的類返回出去,定義方法provideHuman,因?yàn)槭荂omponent依賴Component。所以也能理解

@Component(modules = FstudyActivityModule.class)
public interface FstudyActivityComponent {
? ? Human provideHuman();
}
1
2
3
4

再使用dependencies建FragmentComponent暫且可以理解為子Component,因?yàn)楹竺嬲娴挠凶覥omponent。dependencies = FstudyActivityComponent.class寫上我們的父Component。后面是注入到Fragment里

@Component(dependencies = FstudyActivityComponent.class)
public interface TestFragmentComponent {
? ? void inject(TestFragment testFragment);
}
1
2
3
4

在Activity里,要先生成ActivityComponent,然后提供個(gè)方法,把父Component提供給Fragment

public class FstudyActivity extends BaseActivity {
? ? private FstudyActivityComponent fstudyActivityComponent;
? ? @Override
? ? protected void processLogic() {
? ? ? ? fstudyActivityComponent = DaggerFstudyActivityComponent.create();
? ? }

? ? public FstudyActivityComponent getFstudyActivityComponent() {
? ? ? ? return fstudyActivityComponent;
? ? }
}
1
2
3
4
5
6
7
8
9
10
11

在Fragment里

public class TestFragment extends BaseFragment {
? ? @Inject
? ? Human human;
? ? @Override
? ? protected void processLogic(Bundle savedInstanceState) {
? ? ? ? FstudyActivityComponent fstudyActivityComponent = ((FstudyActivity) getActivity()).getFstudyActivityComponent();
? ? ? ? DaggerTestFragmentComponent.builder()
? ? ? ? ? ? ? ? .fstudyActivityComponent(fstudyActivityComponent)
? ? ? ? ? ? ? ? .build().inject(this);
? ? }

}
1
2
3
4
5
6
7
8
9
10
11
12
好了,在fragment可以使用human了。在java里使用,確實(shí)很繞,代碼多的讓你難以接受。建議先理解,后面出的一篇在Android中使用,你會(huì)很爽。

大致理解和總結(jié)為( 看懂請(qǐng)略過(guò) ):
1、假設(shè)我們用Human注入,這里的FstudyActivityModule 和之前的Module一樣,正常
2、FstudyActivityComponent把要注入的類返回
3、在TestFragment方面,我們新建一個(gè)TestFragmentComponent 依賴 FstudyActivityComponent;
4、在FstudyActivity自定義一個(gè)方法把FstudyActivityComponent提供出去,供TestFragment使用
5、在TestFragment,注冊(cè)下就OK了。很繞,個(gè)人建議先明白這個(gè)流程就好了

7、Component依賴Component,使用@subComponent(這個(gè)和 【標(biāo)題6】 實(shí)現(xiàn)的是同一個(gè)效果)
雖然是實(shí)現(xiàn)同一個(gè)效果,但是方式不同,目的是讓你更多了解Dagger2。同樣以上面的例子。Module和上面一樣不變(我這里是為了Demo區(qū)域化,雖然類名不同,但是內(nèi)容是一致的)
首先建子Component,FragmenComponent,用@Subcomponent標(biāo)注,并注入我們的Fragment里。為什么先建子Component呢。因?yàn)樽覥omponent要在父Component返回,繞不繞!!

@Subcomponent
public interface DemoFragmentComponent {
? ? void inject(DemoFragment demoFragment);
}
1
2
3
4

然后是父Component,ActivityComponent,父Component一切正常,返回值是子Component

@Component(modules = GstudyActivityModule.class)
public interface GstudyActivityComponent {
? ? DemoFragmentComponent demoFragmentComponent();
}
1
2
3
4

在Activity里的操作一樣,初始化我們的父Component,并提供方法,返回父Component,供Fragment使用。

然后是Fragment里

public class DemoFragment extends BaseFragment {
? ? @Inject
? ? Human human;
? ? @Override
? ? protected void processLogic(Bundle savedInstanceState) {
? ? ? ? GstudyActivityComponent gstudyActivityComponent = ((GstudyActivity) getActivity()).getGstudyActivityComponent();
? ? ? ? gstudyActivityComponent
? ? ? ? ? ? .demoFragmentComponent()
? ? ? ? ? ? .inject(this);
? ? }

}
1
2
3
4
5
6
7
8
9
10
11
12
這樣就成功了,可以在Fragment使用human了。看明白了標(biāo)題6,其實(shí)標(biāo)題7原理是一樣的。

大致理解和總結(jié)為( 看懂請(qǐng)略過(guò) ):
1、先建一個(gè)子類Component,用@subComponent標(biāo)注,DemoFragmentComponent
2、然后建父類Component: GstudyActivityComponent,定義個(gè)方法,返回子類Component。
3、在GstudyActivity自定義一個(gè)方法把GstudyActivityComponent提供出去,供DemoFragment使用
4、在DemoFragment,注冊(cè)下,就好了。大致和dependencies類似
注意:但注冊(cè)的時(shí)候?qū)懛ú煌?#xff0c;之前是通過(guò)子Component傳入父Component;而這里是從父Component中獲取子Component,然后直接inject

8、Component依賴Component,使用 @Subcomponent.Builder(和【標(biāo)題6】&【標(biāo)題7】實(shí)現(xiàn)的是一樣的效果)
效果一樣,方式不同,目的還是更了解Dagger2。可以看到這里的標(biāo)注是@Subcomponent.Builder。所以和使用@Subcomponent類似。


好了,還是以上面的例子為例。這里需要改的是父Component和子Componet。這個(gè)時(shí)候我們不免想到@Component.Builder的用法。是不是一樣呢。這個(gè)時(shí)候我只能說(shuō)類似,但是又不一樣。畢竟這里多了個(gè)sub。我們先看下@Component.Builder的用法,拷貝之前代碼(不知道再去回顧下【標(biāo)題4】)

@Component(modules = CstudyModule.class。)
public interface DstudyActivityComponent {
? ? void injectTo(DstudyActivity dstudyActivity);

? ? @Component.Builder
? ? interface Builder {
? ? ? ? Builder cstudyModule(CstudyModule cstudyModule);
? ? ? ? DstudyActivityComponent build();
? ? }
}
1
2
3
4
5
6
7
8
9
10

我們按照找個(gè)方式去寫@Subcomponent.Builder。,@Subcomponent.Builder要使用肯定是在@Subcomponent下,毋庸置疑。首先發(fā)現(xiàn)沒有modules = CstudyModule.class。被@Subcomponent取代了。沒有Module我們就使用無(wú)參

@Subcomponent
public interface OtherFragmentComponent {
? ? void inject(OtherFragment otherFragment);
? ? @Subcomponent.Builder
? ? interface Builder {
? ? ? ? Builder noModule(); ? ?
? ? ? ? OtherFragmentComponent build();
? ? }
}
1
2
3
4
5
6
7
8
9
我先告訴告訴你運(yùn)行結(jié)果把,運(yùn)行結(jié)果報(bào)錯(cuò)了。

@Subcomponent.Builder types must have exactly one zero-arg method,
and that method must return the @Subcomponent type. Already found: hstudyActivityModule()

報(bào)錯(cuò)信息如下:意思是不需要Build返回值方法,通過(guò)Already found: hstudyActivityModule()知道,已經(jīng)發(fā)現(xiàn)了我們的Module。我們?cè)傧胂脒@個(gè)標(biāo)注的名稱sub,不就是子Component繼承父Componet嗎。而且Dagger2內(nèi)部已經(jīng)默認(rèn)了,所以這里沒有Builder返回值方法。所以正確的子Component

@Subcomponent
public interface OtherFragmentComponent {
? ? void inject(OtherFragment otherFragment);
? ? @Subcomponent.Builder
? ? interface Builder {
? ? ? ? OtherFragmentComponent build();
? ? }
}
1
2
3
4
5
6
7
8

接下來(lái)是父Component,返回值當(dāng)然是我們的Builder。

@Component(modules = HstudyActivityModule.class)
public interface HstudyActivityComponent {
? ? OtherFragmentComponent.Builder sonbuilder();
}
1
2
3
4
有人就疑惑了不可以返回子Component嗎。我們假如此時(shí)返回子Component,我先告訴你運(yùn)行報(bào)錯(cuò),信息如下:

Components may not have factory methods for subcomponents that define a builder.

大概意思是:用了@Subcomponent.Builder的話,Component沒有工廠模式方法去創(chuàng)建我們的子Component。好了,就這樣,請(qǐng)?jiān)徫业挠⒄Z(yǔ)四級(jí)!!


Activity還是和之前一樣,初始化我們的父Component,并通過(guò)方法返回。Fragment里使用依賴如下

public class OtherFragment extends BaseFragment {
? ? @Inject
? ? Human human;
? ? @Override
? ? protected void processLogic(Bundle savedInstanceState) {
? ? ? ? HstudyActivityComponent hstudyActivityComponent = ((HstudyActivity) getActivity()).getHstudyActivityComponent();
? ? ? ? hstudyActivityComponent.
? ? ? ? ? ? ? ? sonbuilder().build().inject(this);
? ? }

}
1
2
3
4
5
6
7
8
9
10
11
好了,繞來(lái)繞去,功能實(shí)現(xiàn)了!看到這里對(duì)Dagger2大致了解了吧。

由于在java里使用比較多。臨時(shí)決定java分2篇。不然博客太長(zhǎng),也沒人看。
本文github Demo地址
————————————————
版權(quán)聲明:本文為CSDN博主「巖漿李的游魚」的原創(chuàng)文章,遵循CC 4.0 BY-SA版權(quán)協(xié)議,轉(zhuǎn)載請(qǐng)附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/leol_2/article/details/100546108

總結(jié)

以上是生活随笔為你收集整理的google四件套之Dagger2的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

中文字幕在线一区观看 | 亚洲国产午夜视频 | 2021av在线 | 中文字幕高清 | 在线а√天堂中文官网 | 欧美激情xxxx性bbbb | 国产亚洲精品久久久久5区 成人h电影在线观看 | 天天操夜夜操天天射 | 国产99久久久国产精品免费二区 | 国产成a人亚洲精v品在线观看 | 视频一区在线免费观看 | 99久久99久久精品免费 | 五月天网站在线 | 日韩欧美中文 | 色91在线视频 | 婷婷色 亚洲 | 日韩av在线看| 视频一区二区在线 | 国产中文字幕视频在线 | 久青草视频 | 久99久精品 | 韩国av在线 | 99精品欧美一区二区三区 | 亚洲黄色免费在线看 | av在线免费播放 | 久久久久久久久久久精 | 国产一区免费在线观看 | 中文字幕精品一区二区精品 | 国产麻豆精品在线观看 | 狠狠狠色丁香婷婷综合激情 | 四虎在线观看网址 | 久久九九影视 | 91在线成人 | 欧美日韩精品在线免费观看 | 国产精品成人在线观看 | 国模视频一区二区 | 久久久久9999亚洲精品 | 91成人小视频 | 成人日批视频 | 9999在线视频 | 亚洲精品午夜久久久久久久 | 国产精彩视频一区二区 | 探花视频网站 | 亚洲国产欧美一区二区三区丁香婷 | 日韩电影一区二区三区在线观看 | 女人魂免费观看 | 国产美女久久 | 香蕉视频在线视频 | 夜夜操天天 | 99精品久久久久 | 国内99视频 | 欧美一区二区三区在线播放 | 国产高清不卡一区二区三区 | 97超在线视频| 欧美日韩在线视频免费 | 精品国产乱子伦一区二区 | 成人小视频在线播放 | .国产精品成人自产拍在线观看6 | 97电影在线| 国际精品网 | 91精品999| av日韩中文| 91免费的视频在线播放 | 精品久久久久亚洲 | 久草久草在线观看 | 久久永久视频 | 在线观看国产成人av片 | 香蕉久久久久久av成人 | 亚洲精品美女 | 亚洲精品美女久久17c | 91免费日韩 | 精品成人久久 | 国产精品久久久久久久久久ktv | 国内精品久久久久久久久久久久 | 精品国产一区二区三区蜜臀 | 欧美在线观看禁18 | 成年人视频在线免费观看 | 久久99久久99精品 | 国产做aⅴ在线视频播放 | 一区二区亚洲精品 | 在线观看深夜视频 | 超碰公开在线观看 | 国产一级在线观看视频 | 91在线在线观看 | 在线日韩精品视频 | 99精品国产免费久久 | 中文字幕免费高清在线 | 久久网站免费 | 97人人模人人爽人人少妇 | 在线日韩| 欧美日韩一区二区三区在线免费观看 | 欧美日韩性视频 | 日韩一二三在线 | 一级黄色片在线免费看 | 久久国产福利 | 91成人免费在线 | 久草香蕉在线 | 久久高清国产 | 久久激情日本aⅴ | 日韩亚洲在线 | 最近免费中文字幕mv在线视频3 | 欧美男男tv网站 | 成人av电影免费 | 久久99影院 | 最近日本字幕mv免费观看在线 | 粉嫩一区二区三区粉嫩91 | 欧美 日韩 视频 | 国产va精品免费观看 | 91精品国产一区二区在线观看 | 免费观看视频的网站 | 精品成人久久 | 丁香花在线视频观看免费 | 国产美女精品在线 | 91麻豆精品国产午夜天堂 | 中文国产字幕 | 亚洲午夜不卡 | 久久理论片| 亚洲男男gⅴgay双龙 | 操操操av| 一区二区三区精品久久久 | 最新中文字幕在线观看视频 | 色婷久久| 激情五月婷婷综合 | 久久综合久久久久88 | 黄色最新网址 | 五月婷婷毛片 | 中文字幕 国产专区 | 免费福利在线视频 | 婷婷国产在线观看 | 草久在线 | 国产精品一区二区62 | 九九热只有这里有精品 | 欧美日韩另类在线 | 久久综合狠狠综合 | 好看av在线 | 在线观看黄污 | 中文字幕国内精品 | 欧美日韩国产亚洲乱码字幕 | 亚洲伦理中文字幕 | 国产小视频国产精品 | 国产99一区视频免费 | 成人一级片在线观看 | 日本爱爱免费视频 | 欧美日韩在线观看一区二区三区 | 九色福利视频 | 国产va在线 | 色综合色综合色综合 | 色婷婷激情电影 | 黄色大片av | 99久久久成人国产精品 | 一级α片| 国产网红在线观看 | 欧美日韩在线观看一区二区三区 | 欧美日韩免费观看一区=区三区 | 久久亚洲免费视频 | 综合网欧美 | 黄色网址中文字幕 | 亚洲狠狠婷婷综合久久久 | 亚洲一区二区视频在线播放 | 丁香综合网 | 99r在线视频| 亚洲一区视频在线播放 | 少妇bbb好爽 | 亚洲国产精品成人精品 | 伊人国产女 | 国产91学生粉嫩喷水 | 午夜色大片在线观看 | 操操操干干干 | 日日狠狠| 欧美韩国日本在线 | 久久久国产精品一区二区中文 | 久草在线免费在线观看 | 国产原创91 | 亚洲国产中文字幕 | 免费观看一级一片 | 五月激情天 | 日韩在线观看第一页 | 中文字幕在线观看资源 | 日本婷婷色 | 91久久久久久国产精品 | 99精品国自产在线 | 国产福利精品在线观看 | 久久福利剧场 | 午夜精品久久久久久久久久久久久久 | 黄色一级在线视频 | av成人免费 | 国产午夜三级一区二区三桃花影视 | 免费av免费观看 | 日韩在线观看中文 | 81精品国产乱码久久久久久 | 国产精品久久久久久吹潮天美传媒 | 97综合视频 | 久草在线免费电影 | 中文字幕视频一区二区 | 我要看黄色一级片 | 久久久久久久99精品免费观看 | 亚洲男女精品 | 国产成人一区在线 | 日韩夜夜爽 | 日本不卡一区二区三区在线观看 | 国产精品视频不卡 | 久久精品国产一区二区三区 | 97成人在线视频 | 91视频 - 114av | 毛片激情永久免费 | 91精品久久久久久久99蜜桃 | 中文字幕 成人 | 亚洲精品自在在线观看 | 国产午夜精品久久 | 日韩精品一区二区三区电影 | 欧美大片aaa| 奇米先锋 | 91精品国产自产在线观看 | 亚洲午夜精品久久久 | 综合久久综合久久 | 蜜臀av免费一区二区三区 | 97人人超碰在线 | 国产专区在线视频 | 国内精品在线看 | 97国产精品 | 特级西西www44高清大胆图片 | 免费高清看电视网站 | 国产综合精品久久 | 超碰av在线播放 | 久久久久国产精品免费 | 丰满少妇一级片 | 一区二区三区在线电影 | 黄色大片免费播放 | 日本爽妇网 | 天天操天天摸天天干 | 欧美极品在线播放 | 天天摸天天舔天天操 | 黄色软件视频大全免费下载 | 国产精品va最新国产精品视频 | 深爱开心激情 | 国产高清中文字幕 | 久久这里只有精品久久 | 毛片永久免费 | 日日草视频 | 91精品国产入口 | 日韩电影中文字幕在线 | 天天操操 | 欧美日韩在线电影 | 亚洲japanese制服美女 | 欧美aa在线 | 久久精品欧美一 | 精品国产一区二区在线 | 久久免费视频在线观看30 | 欧美精品中文字幕亚洲专区 | 视频在线观看入口黄最新永久免费国产 | 婷婷丁香五 | 久久久久五月天 | 久久xx视频 | 天天操夜 | 97在线看片| 在线精品视频免费播放 | 91精品国产自产在线观看 | 99色亚洲| 国产小视频在线免费观看 | 一区二区三区电影在线播 | 人人爱在线视频 | 久久五月网 | 成人9ⅰ免费影视网站 | 日韩高清免费无专码区 | 国内精品久久久久久久97牛牛 | 天天综合网在线 | 婷婷成人综合 | 色吊丝在线永久观看最新版本 | 中文字幕欧美日韩va免费视频 | 天天拍天天爽 | 操久| 日韩中文字幕视频在线 | 亚洲精品中文字幕视频 | 99精品一区二区三区 | 韩国一区二区三区在线观看 | 精品国产日本 | 亚洲成人av在线播放 | 中文字幕在线免费播放 | 久久精品电影院 | 成人观看视频 | 亚洲第一伊人 | 日韩av片无码一区二区不卡电影 | 69中文字幕 | 一区二区三区中文字幕在线观看 | 成人免费影院 | 韩国精品视频在线观看 | 久久国产高清视频 | 永久免费的啪啪网站免费观看浪潮 | 日本在线精品视频 | 欧美黄在线 | 一区二区三区四区免费视频 | 国产在线观看一区 | 66av99精品福利视频在线 | 国产成人免费精品 | 天天爽综合网 | 国产在线观看国语版免费 | 91伊人| 97高清视频| 欧美日本中文字幕 | 国产精品1区2区在线观看 | 久久大片网站 | 亚洲综合精品在线 | 午夜性福利 | 亚洲一区美女视频在线观看免费 | 99在线免费视频 | 99人久久精品视频最新地址 | 中文日韩在线视频 | 久久tv| 97超碰资源 | 国产99区 | 日韩午夜电影网 | 国产区在线视频 | 一区 二区电影免费在线观看 | 国产视频黄 | av先锋中文字幕 | 免费a v视频| 免费在线观看av网站 | 欧美在线视频不卡 | 国产精品成人一区二区三区 | 天天干天天做 | 婷婷丁香社区 | 99久久精品一区二区成人 | 在线看国产精品 | 96视频免费在线观看 | 99色免费 | 亚洲激情六月 | 97超碰在线资源 | 久操伊人 | 伊人五月天综合 | 99爱视频在线观看 | 久久久香蕉视频 | 九九视频免费观看视频精品 | 狠狠干夜夜 | 久久精品第一页 | 黄av资源| 中文永久字幕 | 日韩精品免费在线观看 | 日韩在线免费视频 | 国产高清av免费在线观看 | 很黄很污的视频网站 | 日韩免费视频在线观看 | av在线观 | 午夜久久| 色婷婷久久久 | 久久最新网址 | 日韩天堂在线观看 | 97精品国产91久久久久久久 | 福利二区视频 | 成人中文字幕在线观看 | 国产a视频免费观看 | 久久精品第一页 | www日日夜夜 | 91黄色小视频 | 国产成人精品电影久久久 | 欧美日韩视频一区二区 | 欧美a级一区二区 | 91污视频在线观看 | 日日爱网站 | 亚洲视频中文 | 2020天天干夜夜爽 | 天天干天天操人体 | 色婷婷国产精品 | 日韩精品电影在线播放 | 色吊丝在线永久观看最新版本 | 日韩视频在线不卡 | 国产999精品久久久久久绿帽 | 免费91在线 | 日韩在线短视频 | 色香蕉在线 | 精品五月天 | 公开超碰在线 | 一区二区三区免费看 | 亚洲免费视频观看 | 欧美一区二区在线 | 久久综合加勒比 | a级国产乱理伦片在线播放 久久久久国产精品一区 | 精品久久久99 | 亚洲精品福利在线观看 | 麻豆网站免费观看 | 国产在线观看中文字幕 | 色婷婷激情电影 | 黄网在线免费观看 | 青青河边草手机免费 | 亚洲三级性片 | 激情电影影院 | 天天骚夜夜操 | 久久色视频 | 999国产精品视频 | 成人免费一级 | www.伊人网| 婷婷开心久久网 | 一级黄色电影网站 | 国产成人在线播放 | 国产日产在线观看 | 天天操天天干天天爽 | 成人一级在线 | 波多野结衣在线视频免费观看 | 欧美一级专区免费大片 | 日本久久久精品视频 | 精品国产三级a∨在线欧美 免费一级片在线观看 | 91视频免费观看 | 久久精品久久综合 | 免费观看黄色12片一级视频 | 在线黄色观看 | 成人性生交大片免费看中文网站 | 久久精品高清视频 | 97超碰人人澡人人 | 亚洲精品18p| 色九九在线 | 日韩av手机在线看 | 国产日韩一区在线 | 国产成人精品一区二区在线观看 | 成人国产一区 | 日韩欧美在线观看 | 午夜久久福利视频 | 嫩嫩影院理论片 | 日韩专区 在线 | 日韩高清免费观看 | 99久久精品日本一区二区免费 | 欧美日韩高清一区 | av电影在线观看 | 娇妻呻吟一区二区三区 | 日本公妇在线观看 | 日韩欧美在线高清 | 亚洲精品va | 亚洲精品中文字幕视频 | 高清不卡一区二区在线 | 色a在线观看 | 欧美在线视频一区二区三区 | 波多野结衣在线观看视频 | 成人资源站 | 九九热在线视频免费观看 | 久久免费看视频 | 成年人网站免费在线观看 | 夜夜躁狠狠躁日日躁 | 综合精品久久 | 91视频-88av | 久久国产一区 | 午夜精品久久久久久 | 日本护士三级少妇三级999 | 久久成人精品视频 | 四虎成人精品永久免费av九九 | 日韩在线观看的 | 最近免费观看的电影完整版 | 97福利 | 在线精品一区二区 | 久久综合成人网 | 欧美少妇的秘密 | 久久国产视频网站 | 久久刺激视频 | 青青草国产在线 | 狠狠干天天色 | 婷婷国产在线观看 | 日日夜夜亚洲 | 亚洲无在线 | 国产黄a三级三级 | 国产成人在线一区 | 国产精品女人久久久久久 | 丰满少妇高潮在线观看 | 国产精品国产三级国产不产一地 | 中文在线中文资源 | www.91成人 | 日韩在线观看视频在线 | 福利视频网站 | 国产视频一区二区在线播放 | 国产精品成人免费精品自在线观看 | 久久99国产精品视频 | 在线观看视频黄色 | 国产精品18久久久久久不卡孕妇 | 欧美日韩一区二区在线观看 | 久久久久欧美精品999 | 国产精品久久久久久久久久久久冷 | 超碰97人人干| 狠狠久久伊人 | 人人干人人搞 | 日韩av进入 | 成人欧美日韩国产 | 日韩精品视频免费专区在线播放 | 97视频在线观看视频免费视频 | 欧美精品免费在线 | 国产视频观看 | 久久伦理电影网 | 一区二区不卡高清 | 亚洲一级二级 | 在线观看国产麻豆 | 中文字幕亚洲欧美 | 亚洲一区久久久 | 国产精品99精品 | 天天操天天拍 | 国内精品久久天天躁人人爽 | 婷婷中文字幕 | av在线精品| 久久久国产精品亚洲一区 | 欧美激情另类文学 | 午夜视频在线观看一区二区三区 | 成人久久免费 | 亚洲一级免费电影 | 国产不卡在线视频 | 日韩av在线网站 | 久久久久久久看片 | 久久99国产精品视频 | 91在线免费播放 | 精品美女在线视频 | 国产伦精品一区二区三区… | 精品夜夜嗨av一区二区三区 | 99视频在线免费观看 | 91亚·色| 涩涩色亚洲一区 | av免费网页| 99免费| 久久久久久久久影院 | 中文字幕123区 | 成人在线视频一区 | 91香蕉视频在线 | 欧美激情xxxx性bbbb | 日韩精品一区二区在线观看 | 天天操天天射天天爱 | 欧美精品一区二区免费 | 午夜视频在线观看一区二区 | 久久久国产精品一区二区中文 | 国产在线观看中文字幕 | 久久不射影院 | 中文字幕欧美激情 | 成人黄色短片 | 成人在线一区二区 | 久久精品最新 | 国产明星视频三级a三级点| av黄免费看| 色全色在线资源网 | 高清av免费看 | 日韩电影在线观看一区二区三区 | 日韩精品视频在线观看网址 | 九九欧美视频 | 精品欧美一区二区三区久久久 | 黄色影院在线播放 | 久久精品一区二区三区四区 | 亚洲精品在线视频播放 | av在线电影免费观看 | 九九在线高清精品视频 | 国产99久久久国产精品免费看 | 欧美日韩视频免费看 | 激情综合中文娱乐网 | 日韩视频免费在线 | 一区二区三区四区精品视频 | 黄色精品久久久 | 美女久久久久久久久久 | 91精品免费视频 | 久草网站 | 九九导航 | 波多野结衣视频在线 | 美女精品久久久 | 97在线免费视频观看 | 波多野结衣精品在线 | 欧美午夜寂寞影院 | 精品久久久久久久久久国产 | 日韩网站免费观看 | 麻豆视频免费观看 | 午夜丁香视频在线观看 | 亚洲精品一区二区三区高潮 | 久久久久久久免费 | 91亚洲狠狠婷婷综合久久久 | 国产精品第十页 | 亚洲免费成人 | av免费播放 | 丁香综合 | 2019中文最近的2019中文在线 | 天天鲁天天干天天射 | 久久99免费视频 | 最新av电影网站 | 成人av在线看 | 日本3级在线观看 | 性色av香蕉一区二区 | 91免费的视频在线播放 | 成人av在线直播 | 免费能看的av | 亚洲区另类春色综合小说 | 97色在线视频 | 日韩欧美视频在线播放 | 国产免费亚洲高清 | 丁香久久五月 | 国产精品成人aaaaa网站 | 97在线视频网站 | 欧洲黄色片 | 国产精品免费大片视频 | 天堂av高清 | 91大神精品视频在线观看 | 91精品国产福利在线观看 | 国产高清小视频 | 在线观看黄色小视频 | 中文在线 | 成人91在线| 欧美老女人xx | 亚洲午夜激情网 | 婷婷日日 | 日本中文字幕在线观看 | 亚洲天堂网站视频 | 国产中文字幕一区二区三区 | 久久天堂影院 | 人人干网站 | 五月天综合网站 | 91视频免费视频 | 国内精品久久久久久久97牛牛 | 国产精品女同一区二区三区久久夜 | 欧美激情视频免费看 | 亚洲五月婷 | 久久不卡国产精品一区二区 | 9久久精品 | 99精品成人 | 日色在线视频 | 国精产品999国精产品视频 | 亚州精品成人 | 人人爽影院 | 91av小视频 | 91麻豆产精品久久久久久 | 久久久久久久影视 | 97在线成人 | 天天射天天干天天插 | 亚洲日本黄色 | 97在线免费视频 | 日本在线观看一区二区 | 久久久久久高潮国产精品视 | 亚洲国产精品一区二区久久,亚洲午夜 | 在线观看911视频 | 国产精品男女啪啪 | 91亚洲综合| 欧美日韩国产综合一区二区 | 久久久久久久久久久久影院 | 久草在线视频首页 | 综合在线观看色 | 日韩二区三区 | 国产成人在线网站 | 六月色丁| 亚洲国产精品传媒在线观看 | 蜜臀一区二区三区精品免费视频 | 国产资源在线播放 | 欧美日韩视频在线观看一区二区 | 狠狠躁日日躁狂躁夜夜躁av | 亚洲动漫在线观看 | 五月天激情视频在线观看 | 能在线观看的日韩av | 久久久久久久久久久黄色 | 国产成人一区二区三区免费看 | 狠狠狠狠狠狠天天爱 | 国产 在线 日韩 | 亚洲黄色小说网 | 久久精品看| 免费看片日韩 | 久久超级碰视频 | 国产精品99蜜臀久久不卡二区 | 国产美女精品视频免费观看 | 亚洲精品免费在线观看视频 | 精品乱码一区二区三四区 | 国产中文字幕在线 | 国内视频 | 黄色大全免费网站 | 国产伦精品一区二区三区在线 | 97精品超碰一区二区三区 | 国产视频九色蝌蚪 | 亚洲精品大全 | 999久久国产精品免费观看网站 | 五月婷婷激情六月 | 在线亚洲成人 | 97电院网手机版 | 中文字幕在线观看免费观看 | 夜夜躁狠狠躁 | 免费男女羞羞的视频网站中文字幕 | 欧美va天堂va视频va在线 | 亚洲欧美日本国产 | 国产精品99久久久久久小说 | 日韩免费电影网站 | 亚洲精品综合一二三区在线观看 | www黄色软件 | 免费福利在线 | 成人av免费 | 欧美在线你懂的 | 国产一级片不卡 | 最近中文字幕完整高清 | www.久久视频 | 国产精品毛片久久久久久久 | 国产精品一区一区三区 | 97免费视频在线播放 | 亚洲精品456在线播放乱码 | 亚洲欧美在线观看视频 | 激情九九| a级成人毛片 | 波多野结衣视频一区 | av直接看| 久久伦理 | 成人午夜在线观看 | 久草手机视频 | 欧美天天干 | 日韩免费在线观看 | 天天天天天天天天操 | 六月天综合网 | 日本精品va在线观看 | 国产精品免费久久久久久久久久中文 | 亚洲欧美成人 | 麻豆91在线观看 | 久久久久亚洲精品成人网小说 | 精品综合久久久 | 欧美中文字幕第一页 | 成人视屏免费看 | a视频免费 | 亚洲高清视频一区二区三区 | 在线高清 | 青草视频在线 | 国内精品久久久久久久久久清纯 | 久久国产精品精品国产色婷婷 | 97夜夜澡人人双人人人喊 | 亚洲人成精品久久久久 | 国产午夜精品一区二区三区嫩草 | 成人动漫精品一区二区 | 日b视频在线观看网址 | 国产探花在线看 | 亚洲激精日韩激精欧美精品 | 精品二区久久 | av永久网址 | 日韩精品一区二区在线观看 | 96av视频| 国产精品黄网站在线观看 | 91精品视频一区二区三区 | 成人在线免费观看视视频 | 国产一级高清 | 国产在线视频在线观看 | 国产高清不卡 | 久久视频国产 | 国产中文在线视频 | 91禁看片| 亚洲欧美少妇 | 国产亚洲婷婷免费 | 成人在线免费av | 久久精品999 | 亚洲精品videossex少妇 | 亚洲第一色| 色婷婷久久 | 久久久久久国产精品999 | 亚洲国产免费av | 一级大片在线观看 | 中文字幕在线免费播放 | 欧美小视频在线 | 国产中文字幕免费 | 亚洲三级视频 | 久久视频免费在线观看 | 亚洲免费观看在线视频 | 国产在线超碰 | 丝袜美腿亚洲综合 | 国产美女视频网站 | 欧美日韩国产一区 | 夜夜嗨av色一区二区不卡 | 激情久久网 | 久草在线看片 | 久久观看免费视频 | av三级在线播放 | 成人免费视频在线观看 | 久久精品官网 | 高潮毛片无遮挡高清免费 | 久久久亚洲精品 | 国产伦精品一区二区三区无广告 | 国产手机在线观看 | 91精品看片| 国产一级在线免费观看 | 99视频在线观看一区三区 | 国产麻豆剧果冻传媒视频播放量 | 亚洲男人天堂2018 | 日本中文字幕一二区观 | 亚洲精品合集 | 国产日韩欧美自拍 | 97狠狠操 | 激情一区二区三区欧美 | 激情av在线资源 | 成年人电影免费在线观看 | 日本中文字幕网站 | 片黄色毛片黄色毛片 | 免费在线观看一区 | 久久国产精品99久久人人澡 | 成人97视频一区二区 | 日韩中文在线字幕 | 欧美久久久久久久久中文字幕 | 超级碰视频 | 亚洲激情视频在线观看 | 精品在线观看免费 | 99在线免费视频观看 | 美女黄视频免费看 | 国产一级二级在线观看 | 夜夜躁日日躁狠狠躁 | 亚洲久草网 | 国产专区在线播放 | 中文字幕超清在线免费 | 在线观看av片 | wwwwwww色 | 国产青春久久久国产毛片 | av一级在线 | 国产日韩高清在线 | 久久亚洲欧美 | 99爱在线观看 | 国产麻豆精品传媒av国产下载 | 综合五月婷婷 | 2024国产在线 | 99r精品视频在线观看 | 91av综合 | 97碰碰精品嫩模在线播放 | 成人av电影免费在线观看 | 色在线观看网站 | 五月天婷亚洲天综合网鲁鲁鲁 | 1024久久| www激情com | 69久久久 | 国产精品免费久久久久影院仙踪林 | 久草网免费| 久久久香蕉视频 | 国产精品久久久久毛片大屁完整版 | 中文字幕一区二区三区四区视频 | 日韩高清在线一区二区三区 | 亚洲精品tv| 国产精品久久久久久久免费 | 欧美综合在线视频 | 区一区二区三在线观看 | 色综合天天综合网国产成人网 | av先锋影音少妇 | 欧美人体xx| 欧美一区成人 | 中文字幕乱在线伦视频中文字幕乱码在线 | 欧美一级免费在线 | 久久精品视频国产 | 久久午夜国产 | 国产一区播放 | 免费精品国产va自在自线 | 麻豆va一区二区三区久久浪 | 日韩三级免费 | 五月天婷亚洲天综合网精品偷 | 久久网址 | 99热 精品在线 | 国产视 | 欧美日韩伦理在线 | 偷拍久久久 | 91av视频| 亚洲一二区视频 | 国产激情免费 | 视频二区在线 | 久久免费的视频 | 1000部18岁以下禁看视频 | 国产精品11 | 91网页版免费观看 | 久久视频免费 | 91探花在线 | 久久综合狠狠综合久久狠狠色综合 | 三级性生活视频 | 99re国产视频 | 一区二区三区免费在线观看视频 | 成+人+色综合 | 久久九九影视 | 狠狠88综合久久久久综合网 | 999超碰 | 四虎8848免费高清在线观看 | 一级a毛片高清视频 | 亚洲精品视频播放 | 久久线视频 | 亚洲美女免费精品视频在线观看 | 国产精品一区在线播放 | 免费观看久久 | 国产精品美女久久久久久久 | av观看久久久 | 国产99久久精品一区二区永久免费 | 国产视频日韩视频欧美视频 | 成人av网站在线观看 | 中文网丁香综合网 | 婷婷亚洲五月色综合 | www.天天综合| 精品v亚洲v欧美v高清v | 日韩中文字幕免费电影 | 毛片3| 日韩激情精品 | 91传媒免费在线观看 | 久久人人爽视频 | 狠狠干综合网 | 精品国产一区二区三区蜜臀 | 91精品视频免费 | 亚洲日本va午夜在线影院 | 香蕉97视频观看在线观看 | 久久精精品视频 | 国产高清视频色在线www | 五月激情久久久 | 视频一区在线播放 | 久久综合欧美精品亚洲一区 | 91午夜精品 | 色99视频 | 久久综合综合久久综合 | 四虎5151久久欧美毛片 | 日韩毛片在线一区二区毛片 | 青青草国产精品 | 人人射网站 | 欧美极品一区二区三区 | 亚洲欧美999 | 97精品国产一二三产区 | 人人爽人人爽人人爽 | 婷婷丁香久久五月婷婷 | 亚洲精品日韩在线观看 | 超碰在线97国产 | 婷婷在线资源 | 91精品视频免费观看 | 久艹视频在线免费观看 | 青草视频网 | 91精品在线免费 | 97在线观看免费视频 | 日韩av网页 | 夜夜夜夜猛噜噜噜噜噜初音未来 | 二区三区在线观看 | www最近高清中文国语在线观看 | 不卡在线一区 | www.久热 | 久久国产经典视频 | 午夜av在线播放 | 天天看天天操 | 在线精品视频在线观看高清 | 人人爱在线视频 | av夜夜操| 欧美激情精品久久久久久免费印度 | 综合激情久久 | 探花视频在线观看免费 | 国产精品久久网站 | 中文字幕网址 | 亚洲一区日韩 | 国产一区精品在线观看 | av天天在线观看 | 国产精品一区二区三区在线看 | 中文字幕高清免费日韩视频在线 | 99精品欧美一区二区 | 国产免费激情久久 | 亚洲精品日韩av | 久久区二区 | 国产高清日韩 | 免费看短| 精品久久久久久久久久岛国gif | 婷婷av电影| 一区二区三区四区影院 | 国产不卡av在线播放 | 国产精品国产三级国产aⅴ入口 | 六月丁香激情网 | 国产午夜精品一区 | 麻豆视频免费播放 | av亚洲产国偷v产偷v自拍小说 | 手机成人免费视频 | 亚洲美女免费精品视频在线观看 | 黄色网中文字幕 | 精品一区二区三区电影 | 六月婷婷色| 久久99国产精品自在自在app | 成人app在线免费观看 | 欧美成人久久 | 国产精品国产亚洲精品看不卡15 | 久久美女视频 | 狠狠狠的干 | 天天爽人人爽 | 成年人免费在线观看网站 | 久久精品爱爱视频 | 久久精品在线 | 免费视频 三区 | 99精品视频一区二区 | 91秒拍国产福利一区 | 日韩欧美有码在线 | 婷婷丁香九月 | 伊人小视频| 日本少妇久久久 | 国产精品久久影院 | 中文字幕久久亚洲 | 久久99精品久久久久久三级 | 日韩精品影视 | 美女久久视频 | 亚洲欧美精品一区二区 | 人人玩人人添人人澡超碰 | 高清免费在线视频 | 久久久黄色免费网站 | 国产精品激情在线观看 | 在线观看免费黄视频 | 久草在线免费资源 | 超级碰碰免费视频 | 最近中文字幕国语免费av | 精品一区二区亚洲 | 亚洲爽爽网 | 色 免费观看 | 91精品视频在线看 | 久久在现 | 国产激情小视频在线观看 | 91av视频播放| 国产精品aⅴ | 国产成人精品电影久久久 | 中文字幕在线一区二区三区 | 亚洲一区av | 日韩中文字幕在线 | 三级视频日韩 | 国产精品一二 | 久久激情五月丁香伊人 | 久久这里精品视频 | 黄色h在线观看 | 日韩在线电影观看 | 欧美日韩在线播放 | 国内综合精品午夜久久资源 | 婷婷黄色片 |