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

使用用戶首選項存儲、獲取、刪除數據—OpenHarmony數據管理

系統 OpenHarmony
Preferences會隨著存放的數據量越多而導致應用占用的內存越大,因此,Preferences不適合存放過多的數據,適用的場景一般為應用保存用戶的個性化設置(屏幕亮度,是否開啟夜間模式)等。

想了解更多關于開源的內容,請訪問:

51CTO 開源基礎軟件社區

https://ost.51cto.com

用戶首選項的基本能使用

場景說明

用戶首選項為應用提供Key-Value鍵值型的數據處理能力,支持應用持久化輕量級數據,并對其修改和查詢。當用戶希望有一個全局唯一存儲的地方,可以采用用戶首選項來進行存儲。Preferences會將該數據緩存在內存中,當用戶讀取的時候,能夠快速從內存中獲取數據。Preferences會隨著存放的數據量越多而導致應用占用的內存越大,因此,Preferences不適合存放過多的數據,適用的場景一般為應用保存用戶的個性化設置(屏幕亮度,是否開啟夜間模式)等。
本例以一個小示例為大家介紹如何使用用戶首選項對數據進行存儲、獲取、刪除。

效果呈現

本例最終效果如下:

使用用戶首選項存儲、獲取、刪除數據(OpenHarmony數據管理)-開源基礎軟件社區使用用戶首選項存儲、獲取、刪除數據(OpenHarmony數據管理)-開源基礎軟件社區

運行環境

本例基于以下環境開發,開發者也可以基于其他適配的版本進行開發:

  • IDE: DevEco Studio 4.0 Beta1
  • SDK: Ohos_sdk_public 4.0.7.5 (API Version 10 Beta1)

實現思路

本例以設置屏幕亮度為例演示如何使用用戶首選項管理數據,主要特性及實現方式如下:

  • 當用戶在文本框輸入數據后,點擊保存數據,用戶首選項將數據緩存在內存中:通過dataPreferences類的getPreferences方法獲取用戶首選項實例,然后通過該實例調用put方法將數據寫入內存。
  • 當用戶點擊讀取數據時,用戶首選項將數據從內存中讀取出來并顯示在輸入框中:通過用戶首選項實例調用get方法獲取到保存的數據,顯示在輸入框中。
  • 當用戶點擊刪除數據時,用戶首選項將數據從內存中刪除,用戶無法繼續讀取數據:通過用戶首選項實例調用delete方法刪除保存的數據。

說明:

用戶首選項的使用需要注意以下幾點:

  • Key鍵為string類型,要求非空且長度不超過80個字節。
  • 如果Value值為string類型,請使用UTF-8編碼格式,可以為空,不為空時長度不超過8192個字節。
  • 內存會隨著存儲數據量的增大而增大,所以存儲的數據量應該是輕量級的,建議存儲的數據不超過一萬條,否則會在內存方面產生較大的開銷。

開發步驟

由于本例重點講解用戶首選項的數據管理操作,所以開發步驟會著重講解如何通過用戶首選項完成數據的存儲、讀取和刪除,全量代碼可參考完整代碼章節。

首先自定義一個用戶首選項類,根據業務封裝相關方法方便后續調用。
其中包含數據處理的方法,用于完成數據的存儲、讀取和刪除操作。用戶首選項接口的使用方式主要在這部分呈現,需要重點關注。
具體代碼如下:

import dataPreferences from '@ohos.data.preferences';
import promptAction from '@ohos.promptAction';
import ScreenBrightness from '../common/bean/Brightness';

let context = getContext(this);
let preference: dataPreferences.Preferences = null;

// 自定義用戶首選項類
class PreferenceModel {
  private brightness:ScreenBrightness

  // 創建用戶首選項實例preference
  async getPreferencesFromStorage() {
    try {
      preference = await dataPreferences.getPreferences(context, 'setting.db');
    } catch (err) {
      Logger.error('[PreferenceModel]', `Failed to get preferences, Cause: ${err}`);
    }
  }

  // 刪除數據,調用dataPreferences的deletePreferences接口
  async deletePreferences() {
    try {
      await dataPreferences.deletePreferences(context, 'setting.db');
    } catch(err) {
      Logger.error('[PreferenceModel]', `Failed to delete preferences, Cause: ${err}`);
    };
    preference = null;
    this.showToastMessage($r('app.string.delete_success_msg'));
  }

  // 保存數據
  async putPreference(screenBrightness:ScreenBrightness) {
    if (preference === null) {
      await this.getPreferencesFromStorage();
    }
    // 將用戶輸入的亮度數據保存到preference,調用用戶首選項實例的put接口
    try {
      await preference.put('screenBrightness', JSON.stringify(screenBrightness));
    } catch (err) {
      Logger.error('[PreferenceModel]', `Failed to put value, Cause: ${err}`);
    }
    // 使用flush方法將preferences實例的數據存儲到持久化文件,調用用戶首選項實例的flush接口
    await preference.flush();
  }

  // 獲取數據,調用用戶首選項實例的get接口
  async getPreference() {
    let screenBrightness = '';
    if (preference === null) {
      await this.getPreferencesFromStorage();
    }
    try {
      screenBrightness = <string> await preference.get('screenBrightness', '');
    } catch (err) {
      Logger.error('[PreferenceModel]', `Failed to get value, Cause: ${err}`);
    }
    // 如果判斷數據為空則提示用戶先輸入數據
    if (screenBrightness === '') {
      this.showToastMessage($r('app.string.data_is_null_msg'));
      return;
    }
    this.showToastMessage($r('app.string.read_success_msg'));
    return JSON.parse(screenBrightness);
  }

  // 校驗用戶輸入是否為空
  checkData(screenBrightness:ScreenBrightness) {
    if (screenBrightness.brightSwitch === '' || screenBrightness.defaultValue === '') {
      this.showToastMessage($r('app.string.fruit_input_null_msg'));
      return true;
    }
    return false;
  }

  // 點擊保存按鈕保存數據
  writeData(screenBrightness:ScreenBrightness) {
    // Check whether the data is null.
    let isDataNull = this.checkData(screenBrightness);
    if (isDataNull) {
      return;
    }
    // The data is inserted into the preferences database if it is not empty.
    this.putPreference(screenBrightness);
    this.showToastMessage($r('app.string.write_success_msg'));
  }

  // 消息彈框
  showToastMessage(message: Resource) {
    promptAction.showToast({
      message: message,
      duration: 3000
    });
  };
}

UI中主要包含兩大部分:文本和輸入框,按鈕。將這兩部分分別抽取為子組件,在主頁中進行調用。具體代碼如下:
文本和輸入框子組件:

import ScreenBrightness from '../common/bean/Brightness';

@Component
export default struct TextItemComponent {
  private textResource: Resource;
  private placeholderResource: Resource;
  private marginBottom: string;
  private marginTop: string;
  private textInputType: InputType;
  private textFlag: number;
  @Link screenBrightness: ScreenBrightness;
  private textInputCallBack: (value: string) => void;

  aboutToAppear() {
    if (this.textFlag === 0) {
      this.marginTop = '8%';
      this.marginBottom = '4%';
      this.textInputType = InputType.Normal;
    } else {
      this.marginBottom = '321vp';
      this.textInputType = InputType.Number;
    }
  }

  build() {
    Column() {
      // 文本
      Text(this.textResource)
        .fontSize(25)
        .height('3.2%')
        .width('100%')
        .fontColor("#182431")
        .letterSpacing('1.58')
        .fontWeight(500)
        .margin({
          bottom: '2%',
          left: '7%',
          top: this.marginTop
        })
      // 輸入框
      TextInput({
        placeholder: this.placeholderResource,
        text: this.textFlag === 0 ? (this.screenBrightness.brightSwitch) : (this.screenBrightness.defaultValue)
      })
        .placeholderFont({ size: 20, weight: 500 })
        .placeholderColor("#BDC1C4")
        .caretColor(Color.Blue)
        .type(this.textInputType)
        .height('7%')
        .width('93%')
        .margin({ bottom: this.marginBottom })
        .fontSize(20)
        .fontColor("#182431")
        .fontWeight(500)
        .backgroundColor("#FFFFFF")
        .onChange((value: string) => {
          this.textInputCallBack(value);
        })
    }
  }
}

按鈕子組件:

import PreferenceModel from '../model/PreferenceModel';
import ButtonItemData from '../common/bean/ButtonItemData';
import ScreenBrightness from '../common/bean/Brightness';

@Component
export default struct ButtonComponent {
  private buttonItemValues: Array<ButtonItemData> = this.getButtonItemValues();
  @Link screenBrightness: ScreenBrightness;

  build() {
    Column() {
      ForEach(this.buttonItemValues, (item) => {
        Button(item.text, { type: ButtonType.Capsule, stateEffect: true })
          .backgroundColor("#E8A027")
          .width('87%')
          .height('6%')
          .fontWeight(500)
          .fontSize(20)
          .margin({ bottom: '24vp' })
          .onClick(() => {
            item.clickMethod();
          })
      }, item => JSON.stringify(item))
    }
  }

  // 在foreach中渲染Button組件時傳入不同按鈕的參數
  getButtonItemValues() {
    let values: Array<ButtonItemData> = [
      new ButtonItemData(
        '保存數據',
        () => {
          // 調用保存方法
          PreferenceModel.writeData(this.screenBrightness);
        }
      ),
      new ButtonItemData(
        '讀取數據',
        () => {
          // 調用讀取方法
          PreferenceModel.getPreference().then(resultData => {
            this.screenBrightness = resultData;
            console.info('dbdata is '+JSON.stringify(resultData))
          });
        }
      ),
      new ButtonItemData(
        '刪除數據',
        () => {
          // 調用刪除方法
          PreferenceModel.deletePreferences();
          // 數據刪除后將相關內容置為空
          this.screenBrightness.brightSwitch = '';
          this.screenBrightness.defaultValue = ''
        }
      )
    ];
    return values;
  }
}

構建首頁UI。
在頁面生命周期的aboutToAppear中調用自定義首選項類的getPreference方法獲取到保存的數據,這樣如果用戶之前有保存數據的話,進入應用中就可以顯示之前保存的數據。
具體代碼如下:

import PreferenceModel from '../model/PreferenceModel';
import ButtonComponent from '../view/ButtonComponent';
import TextItemComponent from '../view/TextItemComponent';
import ScreenBrightness from '../common/bean/Brightness';

@Entry
@Component
struct Setting {
  @State screenBrightness: ScreenBrightness = new ScreenBrightness('', '');

  build() {
    Column() {
      // 亮度調節文本及文本框
      TextItemComponent({
        textResource: $r('app.string.brightness_text'),
        placeholderResource: $r('app.string.brightness_placeholder'),
        textFlag: 0,
        screenBrightness: $screenBrightness,
        textInputCallBack: (value) => {
          this.screenBrightness.brightSwitch = value;
        }
      })

      // 設定值文本及文本框
      TextItemComponent({
        textResource: $r('app.string.defaultValue_text'),
        placeholderResource: $r('app.string.defaultValue_placeholder'),
        textFlag: 1,
        screenBrightness: $screenBrightness,
        textInputCallBack: (value) => {
          this.screenBrightness.defaultValue = value;
        }
      })

      // 按鈕
      ButtonComponent({ screenBrightness: $screenBrightness })
    }
    .width('100%')
    .height('100%')
    .backgroundColor("#F1F3F5")
  }

  async aboutToAppear() {
    await PreferenceModel.getPreferencesFromStorage();
    // 獲取到之前保存的數據,顯示在輸入框中
    PreferenceModel.getPreference().then(resultData => {
      this.screenBrightness = resultData;
    });
  }
}

完整代碼

由于開發步驟中已經展示了大部分完整代碼,此處補充前文中未呈現的兩個數據類:
亮度數據類:

export default class ScreenBrightness {
  // 亮度調節
  brightSwitch: string;
  // 設定值
  defaultValue: string;

  constructor(brightSwitch: string, defaultValue: string) {
    this.brightSwitch = brightSwitch;
    this.defaultValue = defaultValue;
  }
}

按鈕數據類:

export default class ButtonItemData {

  // 按鈕文本
  text: string;

  // 按鈕點擊事件觸發的方法
  clickMethod: () => void;

  constructor(text: string, clickMethod: () => void) {
    this.text = text;
    this.clickMethod = clickMethod;
  }
}

想了解更多關于開源的內容,請訪問:

51CTO 開源基礎軟件社區

https://ost.51cto.com

責任編輯:jianghua 來源: 51CTO 開源基礎軟件社區
相關推薦

2010-12-15 15:30:45

組策略

2011-05-16 14:01:41

Android首選項ListPrefereAndroid

2022-05-24 15:06:57

AbilityeTS FA鴻蒙

2012-08-13 10:19:16

云計算云存儲數據存儲

2022-02-17 18:08:04

OpenHarmon應用開發鴻蒙

2013-06-18 23:26:36

移動應用用戶使用成本控制管理移動互聯網

2023-04-28 07:34:35

數據管理數據資產管理

2018-03-12 08:17:27

分布式存儲

2021-11-11 12:02:19

消費物聯網數據管理物聯網

2010-10-22 16:40:27

SQL TRUNCAT

2011-02-21 10:35:00

查詢刪除數據

2010-09-02 11:24:45

SQL刪除

2011-05-18 15:08:03

mysql刪除修改數據

2011-10-24 22:23:10

Facebook數據庫刪除

2014-06-20 10:03:23

大數據管理工具

2023-12-29 08:19:52

應用程序開發者數據庫

2019-10-28 09:50:12

Windows 10音量設備

2011-12-01 09:52:07

虛擬化

2017-01-05 18:35:57

數據管理數據治理

2013-10-31 09:19:42

混合云混合云數據管理Data
點贊
收藏

51CTO技術棧公眾號

国内一区二区在线视频观看| 一区二区三区视频观看| 成人短视频在线观看免费| 欧美视频久久久| 奇米精品一区二区三区在线观看| 久久亚洲春色中文字幕| 亚洲av成人片色在线观看高潮| 成人va天堂| 亚洲最新视频在线观看| 欧美一区二区三区在线免费观看| 国产伦精品一区二区三区视频痴汉| 国产精品v欧美精品v日本精品动漫| 欧美精品一区二区三区一线天视频 | 视频在线观看99| 男人添女人荫蒂国产| 韩国精品主播一区二区在线观看 | 精品国产鲁一鲁****| 福利微拍一区二区| 永久免费看av| 在线观看免费高清完整| www.欧美日韩国产在线| 成人网在线观看| 最近免费中文字幕大全免费版视频| 一区二区三区在线| 自拍偷拍亚洲精品| 国产交换配乱淫视频免费| 东京久久高清| 日韩欧美在线观看一区二区三区| 五月婷婷深爱五月| 另类激情视频| 欧美性猛交xxxx偷拍洗澡| 欧美少妇在线观看| 精品视频在线一区二区| 日本一区二区三区dvd视频在线| 精品无人乱码一区二区三区的优势 | 青草av在线| 亚洲欧美一区二区视频| 五月婷婷综合色| 久久久久国产精品嫩草影院| eeuss国产一区二区三区| 7777奇米亚洲综合久久| 亚洲自拍偷拍另类| 免费高清在线视频一区·| 国产ts人妖一区二区三区| 日本一级淫片免费放| 欧美欧美天天天天操| 久久6精品影院| 欧美日韩在线观看成人| 夜间精品视频| 久久电影一区二区| 美女福利视频在线观看| 自拍视频亚洲| 色综合色综合久久综合频道88| 成人在线观看小视频| 99热在线成人| 美女av一区二区| 欧美极品aaaaabbbbb| 欧美成人69| 久久免费国产精品1| 日韩高清免费av| 亚洲在线观看| 国产精品免费福利| 又污又黄的网站| 国产一区不卡在线| yy111111少妇影院日韩夜片| 黑人乱码一区二区三区av| 国产.精品.日韩.另类.中文.在线.播放 | 国偷自拍第113页| 国产毛片久久| 国产日韩欧美视频在线| 国产乱淫片视频| 成人性生交大片| 欧美lavv| 成人在线观看免费网站| 亚洲香蕉伊在人在线观| 日本精品免费在线观看| 粉嫩91精品久久久久久久99蜜桃| 欧美一区二区在线不卡| 中文在线观看免费视频| 色综合中文网| 久久综合伊人77777| 精品少妇theporn| 蜜桃av一区| 成人精品在线观看| 日本成人动漫在线观看| 国产婷婷精品av在线| 三年中国中文在线观看免费播放| 久草在线资源站资源站| 在线区一区二视频| 亚洲天堂av一区二区三区| 国产精品白丝一区二区三区| 国产丝袜高跟一区| 香蕉成人在线视频| 亚洲经典自拍| 国产精品一区二区三区久久| 丰满人妻一区二区三区免费视频 | 欧美日韩高清免费| 成人在线直播| 91久久精品国产91性色tv| 男女视频在线观看网站| 色婷婷狠狠五月综合天色拍| 日韩在线视频中文字幕| 国产精品老女人| 国产在线精品一区二区| 麻豆av一区二区| a级影片在线观看| 在线观看日韩国产| 五月天激情小说| 亚洲精品极品少妇16p| 国产91精品久久久久久久| 99国产精品99| 国产人妖乱国产精品人妖| 欧美乱做爰xxxⅹ久久久| 99久久精品一区二区成人| 亚洲精品二三区| 欧美卡一卡二卡三| 精品在线播放免费| 日本在线免费观看一区| 三妻四妾完整版在线观看电视剧| 日韩欧美国产1| 色哟哟一一国产精品| 日韩成人伦理电影在线观看| 久久久精品动漫| 日皮视频在线观看| 欧美日韩二区三区| 三年中国中文观看免费播放| 性欧美xxxx大乳国产app| 91久久极品少妇xxxxⅹ软件| 国产一区久久精品| 在线电影院国产精品| 91免费在线看片| 日韩激情av在线| 日本在线播放不卡| 欧美黑人疯狂性受xxxxx野外| 亚洲精品一区二区三区四区高清| 欧美成人免费看| 精彩视频一区二区三区| 在线一区亚洲| 成人黄色91| 久久亚洲精品小早川怜子66| 91在线你懂的| 亚洲精品视频在线看| 亚洲第一天堂久久| 久久精品青草| 亚洲影视九九影院在线观看| 中文字幕中文字幕在线十八区 | 免费观看性欧美大片无片| 一本一本久久a久久精品牛牛影视 一本色道久久综合亚洲精品小说 一本色道久久综合狠狠躁篇怎么玩 | 污污视频网站在线免费观看| 首页国产欧美久久| 日韩精品不卡| 97欧美成人| 久久精品国产一区二区电影| 国产chinasex对白videos麻豆| 亚洲欧美一区二区三区极速播放 | 欧美国产精品va在线观看| 亚洲国产精品久久久久久久| 性久久久久久久久久久久| xxxwww国产| 久久精品免费| 五月天婷亚洲天综合网鲁鲁鲁| 国产精品黄色片| 久久久成人av| 人成网站在线观看| 日韩欧美国产黄色| 久久免费手机视频| 国内久久精品视频| 国产freexxxx性播放麻豆| 久久aimee| 国产精品盗摄久久久| 毛片在线不卡| 亚洲国产欧美一区二区丝袜黑人| 黄色在线免费观看| 欧美激情一二三区| 亚洲国产欧美日韩在线| 亚洲美女色禁图| 日韩一区免费观看| 欧美三级一区| 欧美一区二区三区免费视| 午夜小视频在线| 精品国产91久久久久久久妲己| 台湾佬中文在线| 国产精品久久久一本精品 | 国产1区2区在线| 欧美r级电影| 国产精品区一区二区三在线播放| 欧美电影免费观看网站| 毛片精品免费在线观看| 久久国产精品高清一区二区三区| 91精品欧美一区二区三区综合在| 日韩成人一区二区三区| 国产精品美女久久久久久| 欧美做受高潮中文字幕| 免费成人在线视频观看| 日韩国产欧美亚洲| 国产精品99久久久久久动医院| 国产在线一区二区三区四区 | 亚洲免费婷婷| 国产四区在线观看| 伊人久久大香线蕉综合网站 | 蜜桃精品wwwmitaows| 成人午夜激情网| 奇米777日韩| 欧美高清视频一区二区| 国产精品一区二区婷婷| 亚洲精品一区在线观看| 国产精品欧美亚洲| 欧美亚洲一区二区在线| 日本三级片在线观看| 国产精品福利电影一区二区三区四区| 男女一区二区三区| 国产精品一区二区你懂的| 色七七在线观看| 国产视频一区免费看| 日本精品福利视频| 91中文字幕精品永久在线| 日韩伦理一区二区三区av在线| 国产精品流白浆在线观看| 91精品久久久久久久久| 国产亚洲一区二区手机在线观看 | 综合中文字幕| 成人字幕网zmw| 日韩欧美精品电影| 欧美一级成年大片在线观看| 成人女同在线观看| 久久影院免费观看| 欧美另类极品| 日韩小视频在线| 91吃瓜网在线观看| 亚洲无线码在线一区观看| 日韩a级作爱片一二三区免费观看| 精品国内片67194| 亚洲av无码片一区二区三区 | 国产一区亚洲| 久久久久久av无码免费网站下载| 亚州av乱码久久精品蜜桃| 亚洲日本精品| 日韩美女一区二区三区在线观看| 欧美综合激情| 欧洲乱码伦视频免费| 欧美一区二区在线| 美女久久久久| 视频一区亚洲| 久久精品不卡| 91社在线播放| 欧美精品观看| 成人免费性视频| 99精品免费| 岳毛多又紧做起爽| 视频一区在线视频| 久热精品在线观看视频| 精品影视av免费| 亚洲精品在线视频播放| 国产成人丝袜美腿| 国产伦精品一区三区精东| 99精品国产热久久91蜜凸| 日韩av在线看免费观看| 中文字幕不卡一区| 午夜精品一区二区三级视频| 亚洲精品国产一区二区精华液| 久久激情免费视频| 精品高清一区二区三区| 一级黄色av片| 欧美高清www午色夜在线视频| 国产麻豆免费视频| 日韩精品一区二区三区在线播放| 性生交大片免费看女人按摩| 亚洲精品国产suv| 岛国大片在线观看| 另类少妇人与禽zozz0性伦| av老司机免费在线| 国产福利视频一区| 欧美大片91| 久久精品国产美女| 色777狠狠狠综合伊人| 米仓穗香在线观看| 蜜桃av一区| 一级黄色免费毛片| 91在线看国产| 色哟哟一一国产精品| 午夜精品久久久久久久久久| 波多野结衣影片| 日韩欧美一区二区免费| 九色网友自拍视频手机在线| 久久久国产精彩视频美女艺术照福利| 男男gaygays亚洲| 国产精品777| 成人18夜夜网深夜福利网| 日本免费高清一区| 在线国产欧美| 亚洲成人天堂网| 99re这里只有精品视频首页| 四虎影视1304t| 欧美日韩国产一区二区| 91免费视频播放| 日韩精品在线观看一区| 求av网址在线观看| 韩国国内大量揄拍精品视频| 国产福利一区二区三区在线播放| 国产一区二区三区免费不卡| 久久综合99| 无遮挡又爽又刺激的视频 | 高清av免费一区中文字幕| 欧美日韩国产免费观看视频| 黄页网站大全在线观看| 精品无码三级在线观看视频| 久久久久久亚洲中文字幕无码| 一区二区三区四区不卡在线| 中文字幕+乱码+中文| 日韩高清欧美高清| 青草青在线视频| 91沈先生在线观看| 成人情趣视频网站| www黄色av| 成人免费高清视频在线观看| 日韩av手机在线免费观看| 91国产免费观看| 日本中文字幕电影在线观看| 欧美夫妻性生活xx| 日本久久二区| 日韩在线三级| 水野朝阳av一区二区三区| 欧美肉大捧一进一出免费视频| 亚洲欧洲中文日韩久久av乱码| 在线免费观看高清视频| 国产午夜一区二区| 欧美gay视频| 久热国产精品视频一区二区三区| 亚洲第一网站| 东京热av一区| 亚洲成人av在线电影| 国产草草影院ccyycom| 久久天天躁狠狠躁夜夜躁2014| 欧美aaa大片视频一二区| 欧美日韩免费一区二区三区| 成人乱码一区二区三区av| 亚洲成人免费看| 亚洲伦理在线观看| 欧美激情在线观看| 亚洲精品aⅴ| 毛片av在线播放| 岛国一区二区三区| 妺妺窝人体色www在线下载| 欧美mv日韩mv国产| 国精产品一区一区三区mba下载| caoporen国产精品| 国产精品激情电影| 国产精品入口麻豆| 欧美日韩一二三四五区| 色视频在线观看| 日本成熟性欧美| 日韩欧美中文| 国产欧美精品一二三| 亚洲免费av在线| 亚洲成人精品女人久久久| 久久久久久国产| 日韩激情网站| 成人羞羞国产免费网站| 日本一区二区三区dvd视频在线| 在线视频1卡二卡三卡| xxx欧美精品| 亚洲成人偷拍| 热99这里只有精品| 国产欧美日韩在线观看| 91午夜交换视频| 欧美激情高清视频| 色天天色综合| 一道本在线免费视频| 亚洲卡通动漫在线| 午夜成人免费影院| 国产精品天天狠天天看| 欧美日韩少妇| 国产熟妇久久777777| 555www色欧美视频| 99久久精品免费看国产小宝寻花| 欧美久久久久久| 久久99久久精品欧美| 日本网站在线免费观看| 伊人久久免费视频| 在线精品视频一区| 日韩一级在线免费观看| 亚洲欧美偷拍卡通变态| 天堂91在线| 91手机视频在线观看| 在线亚洲伦理| 91香蕉视频在线播放| 日韩精品高清在线| 亚洲成人毛片| 草草久久久无码国产专区| 国产精品国产三级国产aⅴ无密码| 亚洲毛片欧洲毛片国产一品色| 国产精品video| 国产一区亚洲| 亚洲区一区二区三| 亚洲美女又黄又爽在线观看| 欧美h版在线观看| 五月婷婷之综合激情| 亚洲成人综合视频| 日本欧美在线视频免费观看| 六月婷婷久久|