精品欧美一区二区三区在线观看 _久久久久国色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综合| 色香蕉在线观看| 一级片视频在线观看| 精品视频国产| 日韩欧美中文字幕精品| 免费拍拍拍网站| 邻居大乳一区二区三区| 国模一区二区三区白浆| 57pao成人永久免费视频| 一级在线观看视频| 风间由美一区二区av101| 一本色道a无线码一区v| 亚洲成人动漫在线| 久久经典视频| 成人av网址在线| 国产有码一区二区| 成年人视频在线免费看| 一区二区三区在线电影| 亚洲欧美中文日韩在线| 五月天婷婷在线观看视频| 中文在线аv在线| 一区二区在线观看不卡| 视频一区免费观看| 午夜在线视频免费| 国产在线播放一区| 国产精品爽爽爽爽爽爽在线观看| 能看毛片的网站| 国产精品一区二区av影院萌芽| 国产传媒久久文化传媒| 欧美亚洲第一页| 久久精品www人人爽人人| 日韩av久操| 亚洲欧美日本另类| 性欧美丰满熟妇xxxx性久久久| 牛牛精品在线| 亚洲三级电影全部在线观看高清| 成人性生交大片免费观看嘿嘿视频 | 久久99久久99精品蜜柚传媒| 91麻豆一区二区| 日韩精品三区四区| 91av在线影院| 日韩精品人妻中文字幕| 国产精品大片免费观看| 久久久999成人| 国产稀缺精品盗摄盗拍| 日韩黄色大片| 综合欧美国产视频二区| 性色av蜜臀av色欲av| 国产伦精品一区二区三区免费优势| 亚洲va欧美va国产va天堂影院| 国产亚洲欧美另类一区二区三区 | av电影在线观看一区二区三区| 青草国产精品久久久久久| 38少妇精品导航| 国产一级二级三级视频| 先锋资源久久| 久久久精品国产网站| 黑人狂躁日本娇小| 亚洲美女视频| 久久av.com| 男女免费视频网站| 亚洲免费播放| 欧美野外猛男的大粗鳮| 成人在线免费看视频| 99精品视频免费全部在线| 91精品成人久久| 日本一区二区三区四区五区| 99热免费精品| 国产精品av电影| 伊人免费在线观看| 久久国内精品自在自线400部| 久久免费福利视频| 日韩不卡视频在线| 欧美bbbbb| 91视频免费网站| 亚洲精品国偷拍自产在线观看蜜桃| 美女91精品| 国产日韩换脸av一区在线观看| 久久精品免费在线| 香蕉久久久久久久av网站| 97成人精品视频在线观看| 波多野结衣高清在线| 六月丁香婷婷色狠狠久久| 91精品国产自产在线| 国产色综合视频| 成人午夜又粗又硬又大| 欧美日韩一区综合| 18+激情视频在线| 精品动漫一区二区三区| 在线观看国产中文字幕| 97品白浆高清久久久久久| 精品小视频在线| 尤物在线免费视频| 国产偷自视频区视频一区二区| 久热精品视频在线观看一区| 精品人妻在线播放| 欧美专区18| 亚洲一区二区日本| 精品亚洲综合| 亚洲激情校园春色| 成人3d动漫一区二区三区| 免费观看亚洲天堂| 亚洲人成欧美中文字幕| 九九免费精品视频| 男人操女人的视频在线观看欧美| 日韩免费观看av| 亚洲av无码国产精品永久一区| 久久精品国产一区二区| 国产在线一区二| h网站视频在线观看| 亚洲午夜激情网站| 成年人三级黄色片| 亚洲区小说区图片区qvod按摩| 亚洲美女www午夜| 欧美日韩免费一区二区| 日韩国产一区二| 韩国精品一区二区三区六区色诱| 黄色一级a毛片| 中文一区二区在线观看| 六月丁香激情网| 国产精品久久久久av蜜臀| 色多多国产成人永久免费网站 | 韩国三级hd中文字幕有哪些| 伊人春色精品| 亚洲97在线观看| а√中文在线资源库| 亚洲国产成人私人影院tom| 丰满的少妇愉情hd高清果冻传媒| 福利写真视频网站在线| 欧美丰满少妇xxxxx高潮对白| 中文字幕第17页| 精品一区亚洲| 26uuu久久噜噜噜噜| 天堂国产一区二区三区| 一区二区三区中文字幕电影| 日本77777| 国产精品福利在线观看播放| 日韩美女中文字幕| 青青操在线视频| 黑人狂躁日本妞一区二区三区 | 亚洲欧美日韩天堂一区二区| 久久久久久久久久久97| 国产福利不卡视频| 亚洲一区 在线播放| 国产一区 二区| 久久国产精品久久久久久| 国产又粗又黄又爽的视频| 国产精品另类一区| 中日韩av在线播放| 97久久视频| 成人欧美在线观看| www免费在线观看| 欧美一区二区精品久久911| 日韩激情综合网| 国产麻豆精品视频| 成年丰满熟妇午夜免费视频 | 欧美黄污视频| 亚洲xxx自由成熟| 永久免费网站在线| 欧美久久久久久蜜桃| 99久久久无码国产精品不卡| 久久精品国产一区二区三| 国产美女视频免费| 麻豆精品国产| 久久免费少妇高潮久久精品99| 天天天天天天天干| 中文字幕第一区综合| 亚洲最大成人在线观看| 久久精品一区二区不卡| 97超碰在线播放| 在线观看网站免费入口在线观看国内 | 亚洲一卡二卡三卡四卡无卡网站在线看| 美女免费久久| 宅男噜噜噜66一区二区66| 精品自拍偷拍视频| 成人av电影在线观看| 无码播放一区二区三区| 精品黄色一级片| 91在线免费视频| 91探花在线观看| 国产亚洲成av人片在线观看桃| 国产在线观看免费av| 99热国产精品| 日韩一级理论片| 1024精品久久久久久久久| 高清免费日韩| 欧美不卡高清一区二区三区| 久久综合免费视频| 天堂av在线免费观看| 欧美色网站导航| 久久久久久久福利| 欧美激情在线一区二区| 国产精品偷伦视频免费观看了 | 久久精品美女视频网站| 亚洲经典一区二区| 欧洲亚洲国产日韩| 男人操女人的视频网站| 久久在线观看免费| 成人在线短视频| 日日摸夜夜添夜夜添国产精品 | 精品福利视频导航大全| 午夜久久久久久久久久一区二区| 韩国三级在线播放| 日韩—二三区免费观看av| 欧美一区二区视频在线播放| 国产免费av一区二区三区| 亚洲专区在线视频| 忘忧草在线www成人影院| 久久久久久久久电影| 国产三级在线| 日韩成人中文电影| 国产绳艺sm调教室论坛| 欧美性大战久久| 特一级黄色大片| 亚洲精品国产精华液| 特级西西人体高清大胆| 91丨九色丨蝌蚪丨老版| 久久久久亚洲av无码网站| 九九九久久久精品| 热久久精品免费视频| 日韩视频二区| 久久福利一区二区| 91精品国产乱码久久久久久| 神马一区二区影院| 国产精品一区二区三区av麻| 精品91免费| 波多野结衣欧美| 5566av亚洲| 91麻豆精品国产综合久久久| 国产精品国产福利国产秒拍| 国产一二三在线| 午夜精品一区二区三区在线视 | 中文字幕一区二区三区av| 精品成人av一区二区三区| 99在线热播精品免费| 男生和女生一起差差差视频| 精品在线你懂的| 欧美三级理论片| 蜜桃免费网站一区二区三区| 国产成人av影视| 日韩二区在线观看| 日韩肉感妇bbwbbwbbw| 日韩精品视频网站| 手机看片一级片| 久久99精品国产麻豆婷婷| 欧美第一页浮力影院| 蜜臀av性久久久久蜜臀aⅴ| 国产又大又黄又粗的视频| 青青青爽久久午夜综合久久午夜| 亚洲成人动漫在线| 午夜久久黄色| 福利在线一区二区| 亚洲精品美女91| 成人毛片视频网站| 99在线精品视频在线观看| 久久久999免费视频| 性娇小13――14欧美| 男人的天堂99| 免费在线视频一区| av中文字幕网址| 丁香六月久久综合狠狠色| 欧美双性人妖o0| 久久影视一区二区| 一区二区三区在线观看免费视频| 成人免费视频一区二区| 成人性生活免费看| 久久久国际精品| 黑人狂躁日本娇小| 亚洲欧美日韩国产手机在线| 国产盗摄x88av| 午夜精品一区在线观看| 岛国av中文字幕| 欧美精品乱码久久久久久| 国产三级三级在线观看| 亚洲国产天堂久久综合网| 国产一区电影| 久久久成人精品| 麻豆免费在线| 国产在线拍揄自揄视频不卡99| 不卡一二三区| 国产综合福利在线| 美女视频亚洲色图| 日韩福利在线| 亚洲视频高清| 午夜激情在线观看视频| 国产成人在线视频免费播放| 青青草视频播放| 国产精品日韩精品欧美在线| 青娱乐国产在线视频| 一本大道综合伊人精品热热| 一本色道久久综合亚洲| 亚洲成人精品久久久| av在线免费播放网站| 欧美激情在线狂野欧美精品| 亚洲不卡系列| 国产一区二区三区四区五区在线| av成人综合| 亚洲看片网站| 亚洲视频1区| 日韩精品视频网址| 欧美激情在线免费观看| 日本在线小视频| 欧美一区二区福利视频| 国产中文字幕在线观看| 欧美精品成人在线| 99视频这里有精品| 日韩成人在线资源| 国产日韩1区| 麻豆免费在线观看视频| 中文字幕不卡的av| 国产又粗又爽视频| 精品国产凹凸成av人网站| 毛片在线看网站| 国产精品成久久久久三级| 天天躁日日躁狠狠躁欧美巨大小说 | 亚洲无码久久久久久久| 亚洲黄页视频免费观看| 亚洲性图自拍| 成人免费视频a| 久久一级电影| 一区二区三区 日韩| 久久久一区二区| 800av免费在线观看| 精品sm捆绑视频| 综合久久2o19| 亚洲一区二区三区久久| 99久久夜色精品国产亚洲96| 日日碰狠狠丁香久燥| 91网站黄www| 欧美日韩综合在线观看| 欧美精品一区二区在线播放| 在线观看wwwxxxx| 亚洲综合大片69999| 五月天激情综合网| 国产3p在线播放| 国产精品高潮呻吟久久| 国内av在线播放| 中文字幕精品www乱入免费视频| 成人video亚洲精品| 国产中文欧美精品| 亚洲乱码免费伦视频| 国产资源中文字幕| 一区二区三区在线免费观看| 性网爆门事件集合av| 欧美精品第一页在线播放| 日韩中文字幕无砖| 国产欧美日韩小视频| 不卡高清视频专区| 日韩字幕在线观看| 日韩毛片中文字幕| 美脚恋feet久草欧美| 日本一区二区三区四区在线观看| 欧美欧美全黄| 欧美成人精品一区二区综合免费| 久久久久久一级片| 午夜影院免费在线观看| 亚洲人成电影在线观看天堂色| h片在线免费| 99一区二区| 亚洲欧美日韩国产综合精品二区 | 日本免费黄色小视频| 国产成人无遮挡在线视频| 久久久全国免费视频| 亚洲精品国产品国语在线| 日韩电影免费观看高清完整版| 91精品天堂| 在线亚洲激情| 精品成人无码一区二区三区| 欧美乱妇20p| 国产第一页在线| 欧洲在线视频一区| 久久99精品国产麻豆不卡| 久久久久久天堂| 亚洲欧洲日本专区| 日本黄色成人| 日韩精品久久一区二区| 2021久久国产精品不只是精品| 久热精品在线观看| 亚洲欧美一区二区激情| 久草综合在线| 99在线精品免费视频| 欧美激情综合在线| 二区三区在线视频| 国产精品欧美日韩| 国产精品久久| 久久久精品成人| 精品播放一区二区| 先锋影音一区二区| 男人添女人下面高潮视频| 国产精品国产a级| 色哟哟在线观看| 亚洲自拍偷拍第一页| 久久精品1区| 18精品爽视频在线观看| 色偷偷9999www| 色婷婷精品视频| 女同性αv亚洲女同志| 欧美性受xxxx黑人xyx| 91av久久| 男人的天堂视频在线|