精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

用Dagger2在Android中實現(xiàn)依賴注入

移動開發(fā) Android
依賴注入這個模式(模式已經(jīng)用爛了,這里再爛一次)是用來給應(yīng)用的各部分解耦的。使應(yīng)用開發(fā)更加可擴(kuò)展,更容易維護(hù)。通過本文你會學(xué)到如何使用Dagger2來處理依賴。

[[174027]]

依賴注入這個模式(模式已經(jīng)用爛了,這里再爛一次)是用來給應(yīng)用的各部分解耦的。使應(yīng)用開發(fā)更加可擴(kuò)展,更容易維護(hù)。通過本文你會學(xué)到如何使用Dagger2來處理依賴。

簡介

如果以對象需要另外的一個對象才能完成一個完整功能的話,那么這里就存在一個依賴。比如,悟空要用金箍棒才能三打白骨精,要筋斗云才能十萬八千里。悟空有對金箍棒和筋斗云的依賴。你可以在悟空對象里初始化金箍棒,也可以用一個工廠方法批量生產(chǎn)金箍棒。使用依賴注入可以無需一個專門的類來初始化這些依賴對象。這樣就實現(xiàn)了解耦。

本教程會使用***的Dagger2(當(dāng)前的版本是2.2)。這里是官網(wǎng)。你可以在這里找到***的發(fā)布。

準(zhǔn)備

Android Studio是必須的。其他:

1. Dagger2 基礎(chǔ)

注解講解:

  • @Module這個annotation修飾的類專門用來提供依賴
  • @Provides這個annotation修飾的方法用在Module類里
  • @Inject用來annotation一個依賴(可以是構(gòu)造方法、field或者一般的方法)
  • @Component連接@Module和注入的橋梁

這些名詞看起來非常抽象。下面稍微解釋一下。依賴反射并沒有什么神奇的地方。只不過是我們需要單獨(dú)寫初始化依賴的地方由其他的框架代替了。這個依賴關(guān)系也有我們常寫的代碼轉(zhuǎn)移到了“配置文件”中。

在很久以前,依賴注入的框架就是這樣處理依賴注入的:讀取配置文件的依賴關(guān)系,然后用反射的方法初始化被依賴對象并賦值給調(diào)用依賴的對象。比如,我們之前在悟空類中初始化金箍棒:

  1. public class Wukong { 
  2.     private Jingubang jingubang; 
  3.  
  4.     public Wukong(){ 
  5.         // 依賴 
  6.         this.jingubang = Jingubang(); 
  7.     } 
  8.  

后來有了使用配置文件的依賴注入(這里都是虛構(gòu)的文件格式):

  1. <xml> 
  2.     <com.xiyou.Wukong> 
  3.         <dependency field="jingubang"
  4.             <com.xiyou.Jingubang /> 
  5.         </dependency> 
  6.     </com.xiyou.Wukong> 
  7. </xml>  

在悟空使用金箍棒的時候,依賴注入框架自動初始化好了金箍棒,并賦值給了悟空。

現(xiàn)在使用Dagger2。這里就有不得不說的牛X的地方了。因為是在Android里能用的資源沒有后端那么多。尤其反射消耗比較大!所以Dagger為了滿足移動開發(fā)節(jié)約資源的需要,沒有使用反射實現(xiàn)依賴注入。而是在編譯的時候同時生成依賴注入的相關(guān)代碼。生成代碼的根據(jù)就是前文中說明的那些注解(annotation)以及使用這些annotation的類、接口。

總結(jié)起來就一句話,Dagger把你需要在悟空類里寫的金箍棒類的初始化代碼都根據(jù)注解替你自動生成了!只不過這種生成的代碼比明晃晃的使用new初始化的方法更加復(fù)雜一些。

Dagger2 開發(fā)步驟

把大象裝冰箱一共分幾步:

  1. 定義依賴和被依賴的對象的類,悟空類和金箍棒類。“悟空類”和“金箍棒類”的構(gòu)造函數(shù)用@Inject注解修飾。
  2. 定義一個@Module注解的類,一般叫做XXXModule。里面寫的@Provides注解修飾的方法。這些@Provides方法返回“悟空類”和“金箍棒類”對象。比如@Provides Wukong provideWukong(){ return new Wukong(); }
  3. 創(chuàng)建一個interface,并用@Component注解修飾。一般叫做XXXComponent。里面寫一個注入方法:void inject(Wukong wk);。這里Wukong只是一個例子。任何你準(zhǔn)備要注入的類都可以代替上面參數(shù)的Wukong類。
  4. 在需要注入的地方寫@Inject的field。

***,Dagger會根據(jù)上面的內(nèi)容和***的@Component接口生成一個DaggerXXXComponent的類型,使用這個類型來實現(xiàn)注入。上面的1到3步可以理解為依賴的配置。***的XXXComponent代替古老的Reflect方式實現(xiàn)注入。

***步的@Inject修飾的構(gòu)造函數(shù)和`@Module`的`provideXXX`方法二者可以省略一個。

Dagger可以根據(jù)其中的任意一種配置創(chuàng)建依賴的對象。都寫上等于有了雙保險。

上文提到過多次。Dagger 2厲害的地方就在于這個庫完全不用反射,而是用在編譯期生成代碼的方式實現(xiàn)的依賴注入。這個特點(diǎn)導(dǎo)致在Android Studio配置的時候需要做一些額外的工作。

這里假設(shè)你已經(jīng)創(chuàng)建了一個新的Android應(yīng)用項目。下面打開build.gradle文件,我們一步一步的來完成Dagger2的配置。

3. Android Studio的配置

***步

  1. apply plugin: 'kotlin-android' // 非必須 
  2.  
  3. apply plugin: 'kotlin-android-extensions' // 必須!!!  

為什么要加一個新的plugin呢?這個是為后面使用的kapt和provided提供支持的。gradle本身不支持這兩個操作。

第二步

  1. buildscript { 
  2.     ext.kotlin_version = '1.0.1-2' 
  3.     repositories { 
  4.         mavenCentral() 
  5.     } 
  6.     dependencies { 
  7.         classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" 
  8.         classpath "org.jetbrains.kotlin:kotlin-android-extensions:$kotlin_version" 
  9.     } 
  10.  

第三步

  1. dependencies { 
  2.     // ...其他略... 
  3.     compile 'com.google.dagger:dagger:2.2' 
  4.     kapt 'com.google.dagger:dagger-compiler:2.2' 
  5.     provided 'javax.annotation:jsr250-api:1.0' 
  6.  
  • dagger, 我們要用的正主。
  • dagger-compiler, 用來生成代碼。
  • java.annotation, 提供Dagger意外的注解

***,同步Gradle。

使用Dagger 2

下面就是Dagger一展身手的時候了。

首先,我們已經(jīng)有悟空和金箍棒了。代碼如下:

悟空:

  1. import javax.inject.Inject; 
  2.  
  3. /** 
  4.  * Created by uncle_charlie on 6/4/2016. 
  5.  */ 
  6. public class Wukong { 
  7.  
  8.     @Inject 
  9.     JinGuBang jinGuBang; 
  10.  
  11.     @Inject 
  12.     public Wukong() { 
  13.  
  14.     } 
  15.  
  16.     public String useJinGuBang() { 
  17.         return this.jinGuBang.use(); 
  18.     } 
  19.  

金箍棒:

  1. import javax.inject.Inject; 
  2.  
  3. /** 
  4.  * Created by uncle_charlie on 6/4/2016. 
  5.  */ 
  6. public class JinGuBang { 
  7.  
  8.     @Inject 
  9.     public JinGuBang() { 
  10.  
  11.     } 
  12.  
  13.     public String use() { 
  14.         return "user Jing gu bang"
  15.     } 
  16.  

悟空對金箍棒有依賴,所以金箍棒屬性有@Inject注解修飾。

因為兩個類都需要Dagger創(chuàng)建,所以在構(gòu)造函數(shù)上都有@Inject注解。

第二步 創(chuàng)建@Module類

創(chuàng)建@Module注解的類,并在其中添加@Provides注解修飾的方法。這些方法創(chuàng)建被依賴的對象。

  1. import dagger.Module; 
  2. import dagger.Provides; 
  3.  
  4. /** 
  5.  * Created by uncle_charlie on 6/4/2016. 
  6.  */ 
  7. @Module 
  8. public class XiYouModule { 
  9.     @Provides 
  10. //    @Singleton 
  11.     Wukong provideWukong() { 
  12.         return new Wukong(); 
  13.     } 
  14.  
  15.     @Provides 
  16. //    @Singleton 
  17.     JinGuBang provideJinGuBang() { 
  18.         return new JinGuBang(); 
  19.     } 
  20.  
  • @Singleton注解表明,這個被依賴的對象在應(yīng)用的生命周期里只有一個實例。
  • 這個里的@Provides方法和前一步說到的@Inject注解的構(gòu)造函數(shù)兩個可以只寫一個。

第三步 @Component接口,連接@Module和@Inject

@Module和@Provides方法提供了被依賴的對象。@Inject在@Component接口出現(xiàn)的地方則是指明了需要注入的地方(一般是一個field)。@Component接口就是用來把他們連接起來的。

  1. import android.app.Activity; 
  2. import javax.inject.Singleton; 
  3. import dagger.Component; 
  4.  
  5. /** 
  6.  * Created by uncle_charlie on 6/4/2016. 
  7.  */ 
  8. @Component(modules = {XiYouModule.class}) 
  9. @Singleton 
  10. public interface XiYouComponent { 
  11.     void inject(Wukong wk); 
  12.     void inject(Activity a); 
  13.  

其中inject()方法里使用的對象,就是包含@Inject的field的需要注入的對象。

在這個接口中也可以不用inject()方法,而使用provideXXX()方法后面會有更多介紹。

注意:@Component接口一定要在直接中指明@Module類型

第四步 使用@Component接口獲取對象

經(jīng)過前面的步驟,依賴和被依賴對象關(guān)系都已經(jīng)配置好了。下面就來獲取被依賴對象來注入依賴對象。

  1. public class MainActivity extends AppCompatActivity { 
  2.     private static final String TAG = "##MainActivity"
  3.  
  4.     @Inject 
  5.     Wukong wukong; 
  6.  
  7.     @Override 
  8.     protected void onCreate(Bundle savedInstanceState) { 
  9.         super.onCreate(savedInstanceState); 
  10.         setContentView(R.layout.activity_main); 
  11.  
  12.         TextView welcomeTextView = (TextView) findViewById(R.id.welcome_textview); 
  13.         // 1 
  14.         XiYouComponent xiYouComponent = DaggerXiYouComponent 
  15.                 .builder() 
  16.                 // 2 
  17.                 .xiYouModule(new XiYouModule()) 
  18.                 .build(); 
  19.         xiYouComponent.inject(this); 
  20.         // 3 
  21.         welcomeTextView.setText(wukong.useJinGuBang()); 
  22.     } 
  23.  

首先主要到屬性@Inject Wukong wukong;已經(jīng)在MainActivity 聲明了。這里表明一個依賴關(guān)系:這個activity依賴于悟空,并準(zhǔn)備注入悟空對象。

  1. Dagger2會在編譯器自動生成依賴注入的代碼,所以在添加上面的代碼之前需要編譯一下。DaggerXiYouComponent就是Dagger根據(jù)我們的XiYouModule類生成的代碼。
  2. 在這一步給DaggerXiYouComponent的builder添加XiYouModule的實例。如果這個Module只需要用到無參構(gòu)造函數(shù)的話可以用一種省略用法:create()方法。可以簡寫為:
  1. DaggerXiYouComponent 
  2.                 .builder() 
  3.                 // 2 
  4.                 //.xiYouModule(new XiYouModule()) 
  5.                 //.build() 
  6.                 .create(); 

Component接口的對象調(diào)用inject(this)方法之后注入即完成。所以可以直接使用@Inject Wukong wukong;屬性來調(diào)用方法:welcomeTextView.setText(wukong.useJinGuBang());***在activity中顯示方法返回的文字。

運(yùn)行代碼,看看結(jié)果吧。

結(jié)論

以上內(nèi)容可以概括為:什么被依賴,就把什么放在@Module類里(或者什么被依賴,就給什么添加@Inject的無參構(gòu)造函數(shù))。什么有依賴(@Inject屬性),就把什么放在@Component接口的inject()方法參數(shù)里。(或者有什么@Inject屬性,就在@Component接口里provide什么對象)。這個概括不一定嚴(yán)密,但是基本用法全部包括了。

依賴注入是很有用的。以上的內(nèi)容只是Dagger2依賴注入的一部分。各位讀者還需要根據(jù)官方文檔多加練習(xí)才能更好的理解依賴注入和Dagger的各種用法。

責(zé)任編輯:龐桂玉 來源: segmentfault
相關(guān)推薦

2014-07-08 14:05:48

DaggerAndroid依賴

2016-11-17 16:01:21

dagger2android

2011-05-31 10:00:21

Android Spring 依賴注入

2023-07-11 09:14:12

Beanquarkus

2017-08-16 16:00:05

PHPcontainer依賴注入

2022-12-29 08:54:53

依賴注入JavaScript

2015-09-02 11:22:36

JavaScript實現(xiàn)思路

2016-12-28 13:55:16

Android框架MVP

2025-02-17 00:00:55

NET開發(fā)依賴注入

2009-05-21 16:41:22

GuiceJava依賴注入

2018-03-12 10:02:30

PHP依賴注入

2024-05-06 13:34:28

WireGoogleGo

2022-08-02 07:56:53

反轉(zhuǎn)依賴反轉(zhuǎn)控制反轉(zhuǎn)

2024-01-02 08:22:01

Koin框架項目

2017-10-16 15:04:32

javaAndroidAPT技術(shù)

2024-11-27 00:24:04

2011-03-01 13:45:41

Spring3Annotation

2017-04-20 13:30:00

AndroidRetrofit 2文件上傳

2018-02-10 09:44:19

2022-04-30 08:50:11

控制反轉(zhuǎn)Spring依賴注入
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號

在线免费观看日韩视频| 亚洲一级免费在线观看| 国产日韩av在线播放| 日本xxxxxxx免费视频| 尤物网在线观看| 成人丝袜高跟foot| 全球成人中文在线| av激情在线观看| 女人抽搐喷水高潮国产精品| 91黄视频在线观看| 欧美日韩午夜爽爽| 男人久久精品| 国产一区二区三区不卡在线观看 | 99re久久精品国产| 日韩色淫视频| 一区二区国产盗摄色噜噜| 欧美激情论坛| 亚洲精品国产片| 日韩av一级片| 68精品久久久久久欧美| 疯狂试爱三2浴室激情视频| 青青草久久爱| 日韩视频中午一区| 日韩一级理论片| 国产99re66在线视频| 国产精品久久久久7777按摩 | 亚洲伦理在线观看| 青娱乐精品在线视频| 97视频在线观看视频免费视频 | 精品国产成人在线| 影音先锋成人资源网站| 国产三级电影在线| 91美女精品福利| 国产精品国产一区二区| 国产精品无码AV| 蜜臀av性久久久久蜜臀aⅴ | 中文字幕在线播| 亚洲国产免费看| 另类专区欧美制服同性| 黄色三级生活片| 国产成人短视频在线观看| 精品乱码亚洲一区二区不卡| 日韩成人精品视频在线观看| 亚洲综合av一区二区三区| 午夜成人免费视频| 男人添女人荫蒂免费视频| 18av在线播放| 亚洲精品国产一区二区精华液 | 91视频国产高清| 波多野结衣视频在线看| 老牛影视一区二区三区| 热久久这里只有精品| 五月婷婷开心网| 国产精品毛片| 日本韩国在线不卡| 免费的毛片视频| 日韩综合一区二区| 国产精品久久久久秋霞鲁丝| 一二三区免费视频| 日本在线不卡视频| 成人h猎奇视频网站| 一区二区国产欧美| 国产一二三精品| 3d动漫精品啪啪一区二区三区免费| 国产精品视频一区二区三区,| 精品一区二区免费看| 国产欧美在线观看| 999av视频| 成人黄色在线视频| 免费国产一区二区| 在线免费观看的av网站| |精品福利一区二区三区| 日本一级淫片演员| 国产亚av手机在线观看| 亚洲va中文字幕| 少妇高潮喷水久久久久久久久久| 激情开心成人网| 欧美日韩亚洲国产综合| 色婷婷激情视频| 成人自拍在线| 亚洲色图激情小说| 国产麻豆a毛片| 一区视频在线看| 欧美专区中文字幕| 国产又粗又猛视频免费| 国产精品亚洲成人| 乱色588欧美| 1024免费在线视频| 亚洲一区二区三区在线播放| 国产精品-区区久久久狼 | 亚洲一区国产精品| 日韩中文字幕免费在线观看| wwwwww.欧美系列| 亚洲午夜精品久久久中文影院av| 超碰公开在线| 色综合一区二区| www.日本久久| 你微笑时很美电视剧整集高清不卡| 日韩亚洲第一页| 日韩免费观看一区二区| 蜜臀久久99精品久久久久久9| 豆国产97在线| 91社区在线观看| 天天影视涩香欲综合网| 亚洲美女爱爱视频| 欧美一级三级| 久久99热精品这里久久精品| 成人a v视频| 国产成人免费高清| 午夜一区二区三视频在线观看| 黑人精品视频| 91精品国产综合久久精品麻豆 | 97在线精品视频| 这里只有精品6| 91在线高清观看| 黄色片免费在线观看视频| 91精品影视| 亚洲国产成人爱av在线播放| 熟女少妇a性色生活片毛片| 亚洲一区中文| 国产精品久久久对白| 淫片在线观看| 色哦色哦哦色天天综合| 一级黄色电影片| 亚洲国产精品日韩专区av有中文| 欧美午夜一区二区三区免费大片| 久久精品福利视频| 久久国产一级片| 激情深爱一区二区| 丝袜美腿玉足3d专区一区| av资源在线看片| 欧美xxxxxxxx| 国产高清在线免费观看| 久久 天天综合| 亚洲免费精品视频| 91国拍精品国产粉嫩亚洲一区| 日韩av在线不卡| 日本一级淫片免费放| 国产大片一区二区| 欧美少妇在线观看| 欧美专区一区| 欧美成人精品三级在线观看| 国产精品久久777777换脸| 国产精品美女一区二区三区| 亚洲国产精品毛片av不卡在线| 日韩欧美在线精品| 26uuu久久噜噜噜噜| 亚洲欧美色视频| 欧美视频专区一二在线观看| 一区二区免费在线观看视频| 99re国产精品| 99这里只有久久精品视频| 1卡2卡3卡精品视频| 搞黄网站在线观看| 欧美一级专区免费大片| 欧美成人黄色网| 成人午夜视频免费看| 久久综合久久网| 香蕉久久夜色精品国产使用方法| 情事1991在线| 999国产在线视频| 欧美另类一区二区三区| 一区视频免费观看| 国产成人免费xxxxxxxx| 蜜臀av无码一区二区三区| 激情小说一区| 日本午夜人人精品| 亚洲乱亚洲乱妇| 91精品国产综合久久久久久久 | 欧美午夜影院| 国产精品一区二区三区在线| 日韩伦理在线一区| 一区二区三区天堂av| 国产精品女人久久久| 亚洲制服丝袜在线| 亚洲中文字幕无码av| 丝袜诱惑亚洲看片| 公共露出暴露狂另类av| 99精品国产高清一区二区麻豆| 欧美亚洲国产成人精品| www.亚洲视频| 欧美成人bangbros| 日本中文字幕第一页| 国产精品毛片无遮挡高清| 久久久久无码精品| 国产精品一卡| 在线看视频不卡| 卡通动漫国产精品| 国产精品日韩欧美大师| 国产原创在线观看| 日韩电影网在线| 一级做a爱片久久毛片| 偷偷要91色婷婷| 麻豆视频免费在线播放| 粉嫩欧美一区二区三区高清影视 | 中文精品一区二区三区| 亚洲精品a区| 国产精品久久久精品| 成人爽a毛片免费啪啪动漫| 国产性猛交xxxx免费看久久| 亚洲精品一区二区口爆| 91成人网在线| 日韩精品乱码久久久久久| 国产精品区一区二区三区| 美女露出粉嫩尿囗让男人桶| 奇米在线7777在线精品| 久激情内射婷内射蜜桃| 久久久久久久久99精品大| 国产精品久久久久久久久免费桃花| 日韩亚洲欧美视频| 97精品在线| 久久综合九色综合网站| 欧美影院在线| 国产日产亚洲精品| 日本久久免费| 97在线观看免费| 久草在线视频网站| 久色乳综合思思在线视频| 国产一级在线观看| 亚洲精品国产美女| www.com在线观看| 欧美日韩国产一级片| 99精品人妻国产毛片| 五月婷婷综合网| 久久成人国产精品入口| 最新国产成人在线观看| 无码人中文字幕| 国产网红主播福利一区二区| 国产精品久久无码| 成人激情综合网站| 午夜影院免费观看视频| 久久精品国产一区二区三 | 日韩不卡手机在线v区| 日本在线xxx| 尹人成人综合网| 六月婷婷激情综合| 午夜视频一区| 色哟哟免费网站| 天堂美国久久| 99精品视频网站| 国产精品久久天天影视| 夜夜春亚洲嫩草影视日日摸夜夜添夜| 蜜臀久久99精品久久一区二区| 九色综合日本| 日韩在线麻豆| 免费精品视频一区| 九九久久婷婷| 日韩精品一线二线三线| 欧美午夜精彩| 亚洲人体一区| 99久久综合| 国内外成人激情免费视频| 中文字幕人成人乱码| 特级西西444| 国产一区欧美| 国产中文字幕二区| 国产日韩欧美| 成人羞羞国产免费网站| 日韩国产在线观看| 一区二区三区 日韩| 蜜桃在线一区二区三区| 亚洲免费在线播放视频| 国产成人av电影在线观看| 在线观看一区二区三区四区| 26uuu久久综合| 在线看片中文字幕| 亚洲精品午夜久久久| 激情四射综合网| 天天色天天操综合| 自拍偷拍校园春色| 欧美日韩二区三区| 性欧美8khd高清极品| 亚洲国产精品推荐| 国产毛片av在线| 久久久国产成人精品| 欧美黑人猛交| 国产精品都在这里| 国产色99精品9i| 国内一区二区在线视频观看| 国产精品探花在线观看| 中文字幕中文字幕99| 韩日在线一区| 九九九在线观看视频| 国产一区二区精品久久91| 喷水视频在线观看| 亚洲国产成人在线| 国产精品第108页| 91国在线观看| 亚洲第一页视频| 亚洲午夜小视频| 男插女视频久久久| 国产精品久久久久久av福利| 精品国产鲁一鲁****| 欧美三级华人主播| 综合久久久久| 国产成人精品无码播放| 国产高清精品久久久久| 久久久久亚洲av无码专区桃色| 亚洲日本在线观看| 久久久久久久久黄色| 欧美一区二区在线免费播放| 青青青草原在线| 久久99视频免费| 日韩精品一区二区三区av| 国产精品一区二区三区观看| 91亚洲国产成人久久精品| 99爱视频在线| 国产v日产∨综合v精品视频| 卡一卡二卡三在线观看| 亚洲va欧美va人人爽午夜| 亚洲一卡二卡在线观看| 日韩经典第一页| 久久亚洲资源| 91免费精品视频| 精品国产日韩欧美| 五十路熟女丰满大屁股| 国产一区二区久久| 五月天婷婷丁香网| 欧美性猛xxx| 色噜噜在线播放| 久久久久久国产三级电影| 久久精品xxxxx| 欧美尤物一区| 国产欧美日韩综合一区在线播放 | 日本网站在线观看一区二区三区 | 国产综合在线视频| 四虎影视成人精品国库在线观看| 欧美精品人人做人人爱视频| 亚洲日本黄色| 久久免费精品国产| 一区二区三区日韩欧美精品| 国产精品久久久久久久一区二区| 在线国产精品视频| 欧美三区四区| 日本高清一区| 久久精品亚洲| 亚洲AV无码国产成人久久| 午夜久久久影院| 欧美 日韩 国产 在线| 欧美肥婆姓交大片| 欧美美女日韩| 日本一区二区三区四区高清视频| 久久xxxx| 亚洲午夜精品久久久久久高潮| 欧美性猛xxx| 国产尤物视频在线| 国产精品久久久久77777| 欧美日韩在线二区| 欧美特级aaa| 综合久久久久久久| 国产视频手机在线| 欧美精品激情blacked18| 一级毛片精品毛片| 日本大片免费看| aaa亚洲精品一二三区| 91九色丨porny丨肉丝| 日韩精品一二三四区| 9i看片成人免费高清| 日韩久久不卡| 精品一区二区精品| 久久久久成人片免费观看蜜芽| 精品成人一区二区三区四区| 91超碰在线免费| 欧美日韩亚洲在线| 热久久一区二区| 日本福利片在线观看| 欧美不卡视频一区| 草草视频在线观看| 日韩精品第一页| 久久国产福利国产秒拍| 国产免费无码一区二区视频| 精品久久人人做人人爰| 在线观看v片| 伊人天天久久大香线蕉av色| 国产精品主播直播| 天天操中文字幕| xxxxxxxxx欧美| 中文字幕日韩在线| 欧美黄色免费影院| 中文字幕一区二区三区蜜月| 亚洲大尺度网站| 国产精品第七十二页| 一区二区三区四区日韩| 精品无码国产一区二区三区51安| 在线视频你懂得一区| 国产网站在线免费观看| 国产一区免费在线观看| 蜜臀av性久久久久蜜臀av麻豆| 精品人妻在线播放| 亚洲视频自拍偷拍| 亚洲国产精品免费视频| 日本在线视频www| 亚洲人成精品久久久久| 欧美日韩国产综合视频| 亚洲综合成人婷婷小说| 久久一区二区三区超碰国产精品| 手机在线免费看毛片| 亚洲色图第三页| 国内毛片久久| 6080国产精品|