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

了解Android API中的SharedPreferences

移動開發 Android
在Android的開發過程中,會在使用的API中見到很多名字中帶有Preference的類和接口,此篇文章就來介紹一下這些“*Prefere*”的功能和用途。

[[181260]]

Preference翻譯為偏好,但實際上它可以算是Setting(設置)的別名。兩種叫法給人的差異在于針對的對象不同:設置更傾向于設備的屬性,修改設置便是改變設備的功能;偏好則傾向于用戶的性格,用戶基于其個人的偏好來來形成設備的差異化。但是總體而言,它們是一致的,都是通過用戶的需求改變設備的體驗。

在Android的開發過程中,會在使用的API中見到很多名字中帶有Preference的類和接口,此篇文章就來介紹一下這些“*Prefere*”的功能和用途。

在Android提供API中,帶有Preference的其實主要分為兩類:一類是android.content包下的SharedPreferences,另一類則是android.preference包下的Preference。它們分別實現不同功能,卻又相互聯系合作完成對Android程序的控制。

SharedPreferences簡介

SharedPreferences是以復數形式存在,因為在Android中它是用來存儲鍵值對(Key-Value Pair)數據的集合。API中包含了多個方法來方面讀取相應類型的數據:

  1. String getString(String key, String defValue); 
  2. Set<String> getStringSet(String keySet<String> defValues); 
  3. int getInt(String keyint defValue); 
  4. long getLong(String key, long defValue); 
  5. float getFloat(String keyfloat defValue); 
  6. boolean getBoolean(String key, boolean defValue);  

這也表明SharedPreferences所能存儲的類型被限定在了String、int、long、float、boolean這些基礎數據類中,唯一的集合類型也只是Set,而它看起來更像是用來作為不能有重復數據的數組。

還可以單純檢查是否包換指定的主鍵,或者干脆將所有的鍵值對的Map獲取出來:

  1. boolean contains(String key);     
  2. Map<String, ?> getAll();  

Android系統的工程師在設計SharedPreferences的時候,把讀取的功能放在了SharedPreferences上,而把寫回的功能實現在了其內嵌的Editor類上,通過調用edit()方法來獲得一個寫入器。這樣就很容易實現一個只讀的對象,只要返回一個空指針或非可用的Editor對象就可以了。 

  1. Editor putString(String key, String value); 
  2. Editor putStringSet(String keySet<String> values); 
  3. Editor putInt(String keyint value); 
  4. Editor putLong(String key, long value); 
  5. Editor putFloat(String keyfloat value); 
  6. Editor putBoolean(String key, boolean value); 
  7. Editor remove(String key);  

SharedPreferences還有一個內嵌接口OnSharedPreferenceChangeListener,實現它唯一的方法onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key)并通過以下方法添加在SharedPreferences對象上就可以監聽其上鍵值對的增加、刪除和修改:

  1. void registerOnSharedPreferenceChangeListener(OnSharedPreferenceChangeListener listener); 
  2. void unregisterOnSharedPreferenceChangeListener(OnSharedPreferenceChangeListener listener);  

SharedPreferences的在Android系統中的實現

SharedPreferences和內嵌的Editor其實都只是接口定義而已,并沒有實現任何方法。它只是用來制定了一個存儲鍵值對的協議,具體的實現方式和存儲形式可以是任意的。在Android系統中,它默認以XML格式的文件來存儲這些數據,實現的類則是SharedPreferencesImpl。

下邊就是所保存的XML文件的基本格式,它以數據類型作為XML元素的標簽,主鍵(key)是標簽name屬性的值,而主鍵對應的值則作為value屬性的值。但如果是String類型則作為標簽下的content,這樣就不用轉義引號也能更好的處理換行。另外對于null值存儲的結構也比較特殊,它以null為標簽,只有一個name屬性,沒有其他內容。 

  1. <?xml version='1.0' encoding='utf-8' standalone='yes' ?> 
  2. <map> 
  3.     <string name="Name">Ider</string> 
  4.     <boolean name="Android" value="true" /> 
  5.     <set name="Subsites"
  6.         <string>code.iderzheng.com</string> 
  7.         <string>blog.iderzheng.com</string> 
  8.         <string>manual.iderzheng.com</string> 
  9.     </set
  10.     <int name="VersionCode" value="21" /> 
  11.     <long name="VersionNumber" value="1355" /> 
  12.     <float name="Version" value="5.0" /> 
  13.     <null name="Null" /> 
  14. </map>  

Android系統會把該XML文件存儲在/data/data/(packagename)/shared_prefs/下,每一個XML文件就對應一個SharedPreferences對象(實際是SharedPreferencesImpl對象)。但是SharedPreferences是接口不能用來實例化對象,而SharedPreferencesImpl是系統隱藏類,不能被直接訪問使用,其構造函數也只是包可見。所以不能通過new來構建一個SharedPreferences,必須通過Context提供的getSharedPreferences(String, int)來獲得實例。

該方法的***個參數是指定XML文件名(不包含“.xml”后綴)的字符串,方法會去讀取出對應的文件,創建一個SharedPreferences對象。第二個參數指定文件的訪問權限,共有4中可選模式,從API 17開始基于安全的考慮,MODE_WORLD_READABLE和MODE_WORLD_WRITEABLE已經被廢棄使用,只有MODE_PRIVATE和MODE_MULTI_PROCESS可使用,一般情況下指定MODE_PRIVATE即可。

對于從SharedPreferences中讀取指定主鍵的值是十分快的,因為所有存在XML的鍵值對信息全都被讀取被存儲在了SharedPreferences對象中的Map成員變量里,所以讀取都是基于內存訪問。使用Editor寫回到文件是避不開IO操作的,所以使用commit()提交修改還是會花費一些時間。考慮到這點,Android在API 9里引進了apply()方法來異步地將修改后的內容寫回到文件,當然在寫回前也會先更新內存中的鍵值對信息保證讀取到的時***的內容。

既然寫回可以是異步的,那么多次調用getSharedPreferences(String, int)獲得多個SharedPreferences賦值給不同的變量,假如一個變量做了修改,其他的對象不是會出現內容不一致的情況。其實這種情況并不會出現,因為所有創建出來的SharedPreferences都被存儲在ContextImp的一個靜態成員變量中:

  1. /** 
  2. * Map from package nameto preference nameto cached preferences. 
  3. */ 
  4. private static ArrayMap<String, ArrayMap<String, SharedPreferencesImpl>> sSharedPrefs;  

這是一個從程序的Package名字到XML文件名再到SharedPreferences對象的二級Map。所以每次調用getSharedPreferences(String, int)得到的對象其實都是同一個實例,修改操作也都就作用在同一段內存中保證了所有訪問的一致性。apply()方法也會自動將所有修改排入隊列一一寫回文件從而不會因為順序的錯誤而造成意料之外的錯誤覆蓋。所以因為這個緩存機制的存在,多次調用getSharedPreferences(String, int)是非常效率的。而寫回時則推薦使用apply()實現異步操作,而不要用commit()阻礙主線程。

SharedPreferences的使用和示例

一般而言SharedPreferences的名字和主鍵名都是固定的,所以可以定義一些final的字符串變量來保存這些名字,在讀取和寫回時都使用這些常熟變量。對于之前展示的XML對應的代碼就如下邊所示: 

  1. private static final String IDER_PREFERENCE = "ider-preference"
  2. private static final String IDER_PREFERENCE_KEY_NAME = "Name"
  3. private static final String IDER_PREFERENCE_KEY_SUBSITES = "Subsites"
  4. private static final String IDER_PREFERENCE_KEY_IS_ANDROID = "Android"
  5. private static final String IDER_PREFERENCE_KEY_VERSION = "Version"
  6. private static final String IDER_PREFERENCE_KEY_VERSION_CODE = "VersionCode"
  7. private static final String IDER_PREFERENCE_KEY_VERSION_NUMBER = "VersionNumber"
  8. private static final String IDER_PREFERENCE_KEY_NULL = "Null"
  9. public void write(Context context) { 
  10.     final SharedPreferences spref = context.getSharedPreferences(IDER_PREFERENCE, MODE_PRIVATE); 
  11.     HashSet<String> strs = new HashSet<String>(); 
  12.     strs.add("blog.iderzheng.com"); 
  13.     strs.add("code.iderzheng.com"); 
  14.     strs.add("manual.iderzheng.com"); 
  15.     SharedPreferences.Editor editor = spref.edit(); 
  16.     editor.putString(IDER_PREFERENCE_KEY_NAME, "Ider"); 
  17.     editor.putStringSet(IDER_PREFERENCE_KEY_SUBSITES, strs); 
  18.     editor.putBoolean(IDER_PREFERENCE_KEY_IS_ANDROID, true); 
  19.     editor.putFloat(IDER_PREFERENCE_KEY_VERSION, 5.0f); 
  20.     editor.putInt(IDER_PREFERENCE_KEY_VERSION_CODE, 21); 
  21.     editor.putLong(IDER_PREFERENCE_KEY_VERSION_NUMBER, 1355); 
  22.     editor.putString(IDER_PREFERENCE_KEY_NULL, null); 
  23.     editor.apply(); 
  24. public void read(Context context) { 
  25.     final SharedPreferences spref = context.getSharedPreferences(IDER_PREFERENCE, MODE_PRIVATE); 
  26.     String name = spref.getString(IDER_PREFERENCE_KEY_NAME, ""); 
  27.     Set<String> strs = spref.getStringSet(IDER_PREFERENCE_KEY_SUBSITES, null); 
  28.     boolean isAndroid = spref.getBoolean(IDER_PREFERENCE_KEY_IS_ANDROID, false); 
  29.     float version = spref.getFloat(IDER_PREFERENCE_KEY_VERSION, 0); 
  30.     int versionCode = spref.getInt(IDER_PREFERENCE_KEY_VERSION_CODE, 0); 
  31.     long versionNumber = spref.getLong(IDER_PREFERENCE_KEY_VERSION_NUMBER, 0); 
  32.     boolean hasKey = spref.contains(IDER_PREFERENCE_KEY_NULL); 
  33.  

既然SharedPreferences的名字是可以任意給定的,所以對于SharedPreferences的使用就可以有非常的針對性創建不同的文件來存儲不同的內容。比如可以以不同用戶為名存放他們的偏好信息,可以根據不同界面保存布局信息、已訪問的頁碼。Activity就額外實現了獲取SharedPreferences的方法getPreferences(int),它只需要開發者提供文件的打開模式,自動以Activity的類名作為文件名。

SharedPreferences取值時是直接將給定主鍵在Map中的值強制轉換成所需要的值,所以如果用putInt存儲了整型卻用getBoolean()來取,并不會自動轉換成布爾型,而是直接拋出異常,所以要使用要注意保持類型一致。

另外如果沒有存儲過某個主鍵,SharedPreferences會返回null值,而對于String、Set這些類型同樣可以存儲null值,這樣就不能確定null是不是真是存儲的數據了。因此SharedPreferences還提供了contains (String key)方法來檢查給定的主鍵是真的存了null,還是因為并沒有這個鍵值對才返回的null。

SharedPreferences的優缺點

之前講過所以讀取過的SharedPreferences的文件都會被緩存在Map里放在內存中,以便下次直接快速訪問,因為快事SharedPreferences的一大優點。但是也因為都背緩存,而且存放格式是XML,所以SharedPreferences不宜存放過多的鍵值對,值的內容也不能太大。再者SharedPreferences只支持最基本的幾種類型,存儲一些用戶基本信息也足夠了。

如果對設備有root權限,那么就可以直接訪問/data/data/(packagename)/shared_prefs/目錄,將XML文件轉出來查看。或者直接用在adb shell下直接用cat指令觀察數據的改變,非常的方便。

綜合而言,存儲一些內容較小、類型簡單的數據,SharedPreferences絕對是***對象。

責任編輯:龐桂玉 來源: 安卓開發精選
相關推薦

2023-11-09 08:22:38

2011-05-31 17:32:32

Android SharedPref

2022-08-04 18:50:12

Navigator瀏覽器設備

2023-12-09 08:58:30

AndroidActivity啟動模式

2023-12-05 08:20:57

Android系統

2020-04-13 10:37:46

API編程設計

2023-11-06 07:23:06

API開發生態系統

2012-07-25 13:25:11

ibmdw

2011-09-07 13:30:48

Android WidTabWidget

2020-07-09 08:01:48

JavaScriptES模塊

2023-11-26 09:06:46

2020-06-18 09:16:20

JavaScript緩存API

2020-07-29 09:13:28

JavaScript開發技術

2023-10-26 11:19:21

指針Go

2021-05-25 05:25:24

MySQL數據庫

2023-05-06 08:53:13

2017-01-20 08:30:19

JavaScriptfor循環

2013-09-13 15:01:58

2012-02-06 13:52:33

JavaScript

2019-11-29 16:21:22

Spring框架集成
點贊
收藏

51CTO技術棧公眾號

黄色一级a毛片| 色偷偷www8888| 成人勉费视频| 国产精品久久久久国产精品日日| 亚洲精品免费网站| 久久在线视频精品| 欧美老女人另类| 日韩欧美在线1卡| 无码aⅴ精品一区二区三区浪潮 | 91九色国产ts另类人妖| 亚洲aaaaaaa| 国产一区二区中文字幕| 4388成人网| 欧美日韩一级在线观看| 精品一区电影| 精品国产91九色蝌蚪| 一道本在线免费视频| 交100部在线观看| 亚洲天堂中文字幕| 日本精品一区二区三区高清 久久| 国产农村老头老太视频| 久久亚洲精品伦理| 国模吧一区二区三区| av最新在线观看| 精品国产a一区二区三区v免费| 日韩欧美在线不卡| 中文字幕成人在线视频| 毛片电影在线| 亚洲国产精品一区二区久久| 一区二区精品国产| 91这里只有精品| av爱爱亚洲一区| 国产精品12| www.xxx国产| 国内精品在线播放| 国产欧美精品在线播放| 91精品国产自产在线| 自拍偷拍第9页| 国产欧美日韩影院| 亚洲欧美在线第一页| 第四色在线视频| 伊人久久影院| 精品伦理精品一区| 色诱av手机版| av不卡一区| 777精品伊人久久久久大香线蕉| 天天干天天干天天干天天干天天干| 日本不卡免费高清视频在线| 午夜电影一区二区| 久草热视频在线观看| 俺来也官网欧美久久精品| 亚洲综合男人的天堂| 欧美做受777cos| 亚洲妇熟xxxx妇色黄| 亚洲码国产岛国毛片在线| 日韩视频在线免费播放| 国产网友自拍视频导航网站在线观看| 国产精品妹子av| 一区国产精品| av在线影院| 亚洲夂夂婷婷色拍ww47| 大伊香蕉精品视频在线| 国产不卡人人| 色狠狠色噜噜噜综合网| 中文字幕天天干| 成人污版视频| 亚洲а∨天堂久久精品喷水| 日韩无码精品一区二区| 一本久久青青| 色琪琪综合男人的天堂aⅴ视频| 99热6这里只有精品| 午夜精品久久99蜜桃的功能介绍| 欧美日韩成人在线视频| 久热这里只有精品6| 久久精品一本| 亚洲精品免费一区二区三区| 成人精品在线播放| 久久久噜噜噜久久中文字幕色伊伊 | 亚洲高潮无码久久| xxxx在线视频| 国产寡妇亲子伦一区二区| 欧美日韩国产一区二区三区地区| 国产男女无遮挡| 成人四虎影院| 精品三级在线看| 亚洲天堂视频一区| 香蕉国产精品| 午夜精品久久久久久99热软件| av图片在线观看| 久久99国产精品久久| 国产98在线|日韩| 第九色区av在线| 伊人色综合久久天天| 免费av网址在线| 日韩国产网站| 欧美videos大乳护士334| 亚洲熟妇一区二区三区| 婷婷综合激情| 国产成人精品国内自产拍免费看| 99在线无码精品入口| 久久精品一区二区三区不卡牛牛| 欧美日韩一级在线| 中文字幕在线视频久| 欧美老女人第四色| 亚洲精品视频久久久| 亚洲欧美综合| 国产在线播放91| 四虎影视精品成人| 亚洲黄色小说网站| 国产一区二区在线免费播放| 欧美国产不卡| 久久99国产精品久久久久久久久| av手机天堂网| 99精品视频在线观看| 在线观看免费黄色片| 91精品韩国| 欧美精品一区二区蜜臀亚洲| 亚洲制服在线观看| 色噜噜狠狠狠综合欧洲色8| 色综合激情久久| 久久久久无码国产精品一区李宗瑞| 欧美日韩精品在线一区| 97高清免费视频| www.五月婷| 国产精品国产三级国产有无不卡| 欧美 日韩 国产一区| 老司机精品在线| 亚洲曰韩产成在线| 7m精品福利视频导航| 亚洲中文一区二区| 91麻豆产精品久久久久久 | 免费av在线电影| 亚洲国产视频网站| 欧美一级片在线免费观看| 99精品美女| 国产日韩欧美视频| 992tv免费直播在线观看| 在线观看亚洲一区| 一区二区三区四区免费| 麻豆精品网站| 欧美日韩综合精品| 樱花草涩涩www在线播放| 亚洲国产中文字幕久久网| 美女福利视频在线观看| 国产成人精品亚洲日本在线桃色 | 日韩一区二区三区电影在线观看| 91n在线视频| 精品一区二区三区在线播放视频| 在线免费一区| 精品视频一区二区三区| 欧美老少做受xxxx高潮| 黄色片网站免费在线观看| 亚洲成人免费av| 国产人成视频在线观看| 校园春色综合网| 日本电影一区二区三区| 日韩电影中文字幕在线观看| 日本一区二区精品视频| 欧美极度另类| 亚洲视频专区在线| 中文字幕人成人乱码亚洲电影| 国产欧美一区二区精品久导航| 男女无套免费视频网站动漫| 欧美色婷婷久久99精品红桃| 国产一区二区在线播放| 日韩一区二区三区四区在线| 日本韩国欧美超级黄在线观看| 97涩涩爰在线观看亚洲| 狠狠v欧美ⅴ日韩v亚洲v大胸| 色视频欧美一区二区三区| 少妇的滋味中文字幕bd| 国精品**一区二区三区在线蜜桃 | 亚洲成a人v欧美综合天堂下载| 黄色网址在线视频| 日日夜夜精品免费视频| 自拍偷拍99| 国产精品高潮呻吟久久久久| 欧洲精品毛片网站| 91福利在线视频| 精品国产一区二区亚洲人成毛片| 亚洲精品v亚洲精品v日韩精品| 欧美亚洲一区二区在线| 亚洲精品成人无码| 久久99日本精品| 日本福利视频网站| 精品一区毛片| 成人两性免费视频| 国产精品论坛| 中文字幕日韩在线观看| 亚洲黄色一级大片| 欧美在线观看禁18| 久久久久久久国产视频| 久久久久99精品国产片| 麻豆传媒在线看| 久久国产免费| 欧美在线观看视频免费| 欧美激情在线精品一区二区三区| 亚洲bt欧美bt日本bt| 欧美xoxoxo| 欧美激情乱人伦| av在线天堂播放| 日韩av在线免费看| 国产人妖在线播放| 91精品91久久久中77777| 久久久久久久久精| 国产精品国产三级国产专播品爱网| aaaa黄色片| 国产精品一级二级三级| 男人添女荫道口女人有什么感觉| 欧美精品videosex| 三级精品视频久久久久| 亚洲日本香蕉视频| 日韩欧美成人一区| 国产又粗又长又大视频| 色婷婷综合久久久中文一区二区| 国产精品变态另类虐交| 亚洲欧洲另类国产综合| 日韩毛片无码永久免费看| 波多野结衣中文字幕一区| 波多野结衣国产精品| 日韩高清在线一区| 国产3p露脸普通话对白| 欧美日本一区二区视频在线观看 | 欧美性xxxx18| 日韩av黄色片| 亚洲一区二区黄色| 男女性高潮免费网站| 国产精品区一区二区三区| 熟女少妇一区二区三区| 91在线观看免费视频| 香蕉视频污视频| 成熟亚洲日本毛茸茸凸凹| 欧美性猛交xx| 国产精品一区二区三区四区| 午夜精品久久久久久久99热影院| 男人的天堂久久精品| 天美星空大象mv在线观看视频| 男女精品网站| 国产精品亚洲a| 丝袜亚洲另类欧美| 嫩草av久久伊人妇女超级a| 久久精品主播| 91人人澡人人爽人人精品| 日韩电影在线看| 中文久久久久久| 免费看黄色91| www.com污| 国产一区在线看| 蜜桃色一区二区三区| 国产999精品久久久久久绿帽| 毛毛毛毛毛毛毛片123| 国产成人综合在线播放| 亚洲午夜久久久久久久久| 成人av资源站| 中文人妻一区二区三区| 国产欧美日韩麻豆91| 国产视频精品免费| 一区二区三区高清不卡| 日韩精品国产一区二区| 欧美视频国产精品| 中文字幕在线日亚洲9| 717成人午夜免费福利电影| 成人h动漫精品一区二区无码 | 97香蕉碰碰人妻国产欧美| www国产精品av| 中文字幕在线观看免费高清| 一区精品在线播放| 久久久久久久久久久97| 色哟哟欧美精品| 91影院在线播放| 欧美成人猛片aaaaaaa| 日韩午夜影院| www.亚洲人.com| 超碰97免费在线| 国产精品视频久久| eeuss国产一区二区三区四区| 久久国产精品亚洲va麻豆| 日韩在线中文| 国产精品国产亚洲精品看不卡| 日韩av一级片| 91人妻一区二区| 国产无人区一区二区三区| 中文字幕五月天| 黑人巨大精品欧美一区二区一视频| 中文字幕av第一页| 欧美成人aa大片| av一本在线| 久久久久国产精品一区| 欧洲成人一区| 国模精品娜娜一二三区| 日韩精品一区二区三区免费观影 | 最新中文字幕亚洲| 高清精品在线| 亚洲影院色无极综合| 久草成人资源| 国产aaa免费视频| 捆绑变态av一区二区三区| 稀缺小u女呦精品呦| 中文字幕日韩一区二区| 国产高清中文字幕| 精品免费日韩av| 黄网站在线免费| 国产精品第七影院| 久久久精品国产**网站| 免费看污污视频| 免费看欧美美女黄的网站| 国产又爽又黄无码无遮挡在线观看| **欧美大码日韩| 国产日韩在线免费观看| 亚洲成年网站在线观看| 黄色av电影在线播放| 国产ts一区二区| 久久这里只有精品一区二区| 欧美一级爱爱视频| 精品在线播放免费| 日韩不卡av在线| 91久久香蕉国产日韩欧美9色| 欧美一级在线免费观看| 欧美精品在线播放| 天天综合91| 亚洲一区二区三区在线观看视频| 久久久久久亚洲精品杨幂换脸| 中文字幕天堂网| 亚洲一区二区三区中文字幕在线 | 欧美黑粗硬大| 五月天国产一区| 丝袜诱惑亚洲看片| 男女做爰猛烈刺激| 在线影院国内精品| 韩国免费在线视频| 国产精品96久久久久久又黄又硬| 日韩有码一区| 91视频 -- 69xx| 99久久精品情趣| av中文在线播放| 亚洲欧美日韩另类| 日韩成人动漫| 日韩免费三级| 理论电影国产精品| 激情高潮到大叫狂喷水| 欧美乱妇23p| 在线看福利影| 国产精品一区二区在线观看| 亚洲国产一区二区精品专区| 欧美激情 亚洲| 亚洲成精国产精品女| 神马电影在线观看| 日本成人免费在线| 波多野结衣在线播放一区| 在线观看免费污视频| 亚洲精品国产a久久久久久| 亚洲国产精品久久人人爱潘金莲| 欧美国产日韩二区| 日本国产精品| 一区二区三区入口| 亚洲日穴在线视频| 人妻视频一区二区三区| 欧美专区在线播放| 日韩成人精品一区二区| 欧美一级免费在线| 香蕉av福利精品导航| 欧洲一区av| 国产在线日韩在线| 激情久久综合| 伊人网在线视频观看| 欧美日韩在线三区| 三级网站视频在在线播放| 精品国产中文字幕| 视频在线观看一区| 久久中文免费视频| 日韩av综合中文字幕| 91大神在线观看线路一区| 四虎4hu永久免费入口| 91性感美女视频| 亚洲综合五月天婷婷丁香| 欧美国产日韩一区二区| 伊人久久大香线蕉综合网站| 亚洲人视频在线| 大桥未久av一区二区三区| 免费不卡视频| 国产日韩亚洲精品| 美腿丝袜在线亚洲一区 | 国产视频一区二区| 久久精品日产第一区二区三区乱码| 日本va欧美va精品发布| 免费中文字幕在线观看| 亚洲天堂免费观看| 视频欧美一区| 香蕉视频禁止18| 亚洲444eee在线观看| av电影在线播放高清免费观看| 成人一区二区在线| 秋霞成人午夜伦在线观看| 国产中文字幕免费| 日韩小视频网址| 亚洲国产合集| 欧美xxxxx少妇| 337p亚洲精品色噜噜狠狠| xx欧美xxx| 可以看毛片的网址|