精品欧美一区二区三区在线观看 _久久久久国色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久久707| 久久先锋影音av鲁色资源| 日韩在线小视频| av地址在线观看| 理论片午夜视频在线观看| 国产欧美一区二区三区鸳鸯浴| 国产美女精品免费电影| 激情综合网五月婷婷| 国产一区二区精品久| 91精品久久久久久久久99蜜臂| 成人性生活视频免费看| 91在线看片| 成人午夜激情影院| 国产精品国产三级国产aⅴ9色| 日本高清一二三区| 嫩草影视亚洲| 亚洲精品一区二区三区福利| 九九热在线免费| 青春草在线视频| 国产欧美一区视频| 懂色一区二区三区av片| 天天天天天天天干| 9色国产精品| www.亚洲人.com| 国产精品jizz| 亚洲精选av| 91福利精品第一导航| 日韩欧美视频免费在线观看| 川上优的av在线一区二区| 成人午夜激情视频| 5g影院天天爽成人免费下载| jizz国产在线观看| 亚洲黄色免费| 美女精品视频一区| 欧美aaa级片| 国产欧美日韩精品一区二区三区| 精品99999| 国产黄色一区二区三区| 国产精品一区二区av| 国产精品丝袜一区二区| 欧美一二区在线观看| 亚洲国产天堂久久综合| 91人妻一区二区三区| 农村妇女一区二区| 欧美在线一二三| 欧美激情精品久久久久久小说| 9999在线视频| 亚洲国产日日夜夜| 日韩一级片一区二区| av网站导航在线观看免费| 国产精品久久久久久户外露出| 日本高清一区| 国产最新视频在线| 久久久久国产精品厨房| 欧美日韩日本网| 免费国产在线视频| 久久久精品免费网站| 欧美一区亚洲二区| 国产在线三区| 欧美国产禁国产网站cc| 亚洲一区3d动漫同人无遮挡 | 秋霞国产精品| 色香蕉久久蜜桃| 又色又爽又高潮免费视频国产| 厕沟全景美女厕沟精品| 色噜噜夜夜夜综合网| 精品久久久久久无码国产| 姬川优奈av一区二区在线电影| 色哟哟一区二区| 激情五月婷婷久久| 久久青草视频| 91精品国产综合久久婷婷香蕉 | 国产裸体美女永久免费无遮挡| 免费一区视频| 国产精品视频男人的天堂| 91国在线视频| 成人免费视频一区| 热舞福利精品大尺度视频| av女优在线| 亚洲人成电影网站色mp4| 男人天堂网站在线| 免费成人在线电影| 欧美性高清videossexo| 精品国产午夜福利在线观看| 青青草这里只有精品| 国产一区二区黑人欧美xxxx| 成年人免费视频播放| 午夜欧美精品久久久久久久| 97热精品视频官网| 欧美性受xxx黑人xyx性爽| 精品一区二区三区香蕉蜜桃 | 国语自产偷拍精品视频偷 | 国产亚洲午夜| 国产美女精品免费电影| 人成网站在线观看| 欧美国产视频在线| 在线观看三级网站| 中文字幕在线免费观看视频| 51精品久久久久久久蜜臀| 国产亚洲色婷婷久久99精品91| 操欧美老女人| 久久中文字幕一区| √资源天堂中文在线| 国产一区二区看久久| 日本精品免费| 在线免费观看污| 在线观看欧美日本| 三级视频网站在线观看| 午夜激情久久| 日本午夜人人精品| 性欧美8khd高清极品| 国产精品污污网站在线观看| 4444亚洲人成无码网在线观看| 成人网ww555视频免费看| 精品福利二区三区| 国产小视频你懂的| 免费精品视频| 国产一区二区无遮挡| 超鹏97在线| 欧美午夜精品一区二区蜜桃| 三叶草欧洲码在线| 欧美a级片网站| 国产女精品视频网站免费| 欧美巨乳在线| 精品日本美女福利在线观看| 69久久精品无码一区二区| 欧美日一区二区| 清纯唯美日韩制服另类| 欧洲精品久久一区二区| 一区二区不卡在线播放| 涩涩网站在线看| 欧美日韩一区二区综合| 国产成人久久久精品一区| 亚洲国产精品欧美久久| 亚洲免费观看高清完整版在线观看 | 亚洲在线免费观看| 999国产在线视频| 日本丶国产丶欧美色综合| 熟女人妻在线视频| 最新日韩av| 国产99视频精品免费视频36| aa在线视频| 欧美一区二区成人6969| 手机在线中文字幕| 美女在线视频一区| 一区二区三区在线观看www| 欧洲成人一区| 最新中文字幕亚洲| 亚洲一二区视频| 中文字幕一区免费在线观看 | 日韩黄色a级片| 从欧美一区二区三区| 国产手机免费视频| 精品国产一区二区三区不卡蜜臂| 久久久久在线观看| 亚洲av毛片成人精品| 欧美视频中文字幕在线| 中文字幕 自拍| 免费人成精品欧美精品| 先锋影音欧美| 成人在线精品| 欧美激情视频在线| 欧美性受xxxx狂喷水| 五月天亚洲精品| 国产精品三级在线观看无码| 欧美亚洲自偷自偷| 天堂精品视频| 99久久999| 欧美黑人国产人伦爽爽爽| 日批视频在线播放| 色婷婷精品大在线视频 | 欧美一区二不卡视频| 精品av在线播放| 色婷婷av777| 美女网站色91| 欧美a级免费视频| 神马久久av| 国产精品美女免费视频| a级网站在线播放| 欧美精品一区二区蜜臀亚洲| 成人h动漫精品一区二区下载 | 日本少妇xxxx动漫| 久久综合久久综合亚洲| 99sesese| 国产伊人精品| 亚洲高清视频一区二区| 精品中文在线| 热久久免费视频精品| 天堂аⅴ在线地址8| 精品国产亚洲一区二区三区在线观看 | 天天做天天爱综合| 国产专区一区二区| 亚洲四虎影院| 久久久免费电影| 在线免费看av| 亚洲精品电影久久久| 伊人网综合在线| 亚洲不卡在线观看| 国产农村妇女精品一区| 成人avav影音| 可以看污的网站| 亚洲欧美日韩专区| 国产性生活免费视频| 国产日韩欧美一区二区三区| 亚洲va欧美va国产综合剧情| 一区一区三区| 久久99青青精品免费观看| 97电影在线观看| 日韩精品在线第一页| www.麻豆av| 欧美影院精品一区| 成人免费看片98欧美| 亚洲乱码精品一二三四区日韩在线| 无码人妻精品一区二区三应用大全| 国产精品99久久久| www.99av.com| 亚洲欧美日韩国产综合精品二区| 精品视频在线观看一区二区| 国产精品黑丝在线播放| 日韩精品资源| 婷婷五月色综合香五月| 国产成人看片| 日韩精品一区国产| 成人精品一区二区三区| 国产精品亚洲d| 136fldh精品导航福利| 少妇av在线| 欧美精品一区二区免费| 日韩在线资源| 一区二区三区日韩在线| 久青青在线观看视频国产| 亚洲高清在线观看| 成人久久久精品国产乱码一区二区 | 99riav一区二区三区| 911亚洲精选| 国产福利91精品| 亚洲AV无码久久精品国产一区| 久久精品久久99精品久久| 午夜激情福利在线| 可以免费看不卡的av网站| 欧美黄色免费影院| 亚洲一区日韩在线| 97在线播放视频| 另类亚洲自拍| 熟女人妇 成熟妇女系列视频| 国产精品综合色区在线观看| 日韩精品―中文字幕| 亚洲人体偷拍| 欧美又粗又长又爽做受| 亚洲国产导航| 欧美激情 国产精品| 夜夜精品视频| 丰满少妇被猛烈进入高清播放| 一本不卡影院| 亚洲视频在线a| 老司机精品视频一区二区三区| 三级视频中文字幕| 久久电影网站中文字幕| 国产高清999| 国产精品亚洲一区二区三区在线| 国产黄色一区二区三区| 成人午夜免费视频| 大黑人交xxx极品hd| 国产日韩欧美a| 国产视频精品免费| 亚洲综合视频在线观看| 999这里只有精品| 91国偷自产一区二区三区观看| 在线免费一级片| 日韩一区二区免费视频| 姝姝窝人体www聚色窝| 精品中文字幕久久久久久| 成年在线电影| 久久这里有精品视频| 欧洲一区精品| 国产免费一区二区三区在线能观看| 激情不卡一区二区三区视频在线 | 二区三区在线视频| 日韩av综合中文字幕| www.在线视频.com| 九九热这里只有在线精品视| 日本在线啊啊| 国产日本欧美一区| 亚洲五码在线| 日本高清不卡三区| 国产综合激情| 99热这里只有精品在线播放| 国产成人综合在线播放| 人妻一区二区视频| 亚洲黄色小视频| 国产一区二区视频免费| 日韩视频在线你懂得| 日本大臀精品| 欧美大片免费观看| 精品国产免费人成网站| 91成人免费视频| 精品国产一区二区三区噜噜噜| 日韩精品手机在线观看| 日韩高清一区二区| 玖玖爱在线精品视频| 日韩一区在线看| 综合激情网五月| 日韩欧美中文字幕一区| 国产综合视频一区二区三区免费| 欧美日本中文字幕| 精品久久在线| 免费看污久久久| 欧美日韩一区二区高清| 精品亚洲一区二区三区四区| 99精品一区二区三区| 国产成人久久久久| 在线亚洲一区二区| 亚洲精品一级片| 久久亚洲欧美日韩精品专区| 三级成人黄色影院| 久久精品人成| 狠狠爱综合网| 亚洲一二三不卡| 国产精品乱码久久久久久| 天天操天天摸天天干| 日韩精品一区二区三区中文精品| 视频免费一区| 国产精品久久久久9999| 色狼人综合干| 日本中文字幕网址| 国v精品久久久网| 欧美色图亚洲天堂| 91精品国产欧美一区二区成人| jizz日韩| 国产精品免费一区二区三区都可以 | 色www永久免费视频首页在线 | 色综合男人天堂| www 久久久| 一本—道久久a久久精品蜜桃| 日本亚洲最大的色成网站www| 一本色道久久综合亚洲精品图片 | 成 年 人 黄 色 大 片大 全| 国产成人免费在线观看不卡| 日韩一级片大全| 欧美高清精品3d| 黄色av免费在线| 亚洲iv一区二区三区| 一区二区影视| 在线观看网站黄| 亚洲在线一区二区三区| 亚洲精品国产手机| 欧美激情亚洲一区| 成人福利免费在线观看| 妺妺窝人体色777777| av高清不卡在线| 国产中文字幕视频| 亚洲色图在线观看| 欧美aaa大片视频一二区| 日韩欧美精品一区二区| 日韩av一二三| 国产极品美女在线| 日韩一区二区三区在线观看| 欧美videos另类精品| 国产精品一区二区三区四区五区 | 亚洲黄色小说网| 国内精品免费午夜毛片| 免费久久精品| 91小视频网站| 亚洲精品国产a| 性插视频在线观看| 国产精品高清网站| 香蕉国产精品| 国产精品无码一区二区三| 欧美性xxxxx极品娇小| 成人午夜电影在线观看| 成人在线观看视频网站| 亚洲视屏一区| 国产精品无码午夜福利| 欧美日韩二区三区| 免费av不卡在线观看| 麻豆亚洲一区| 精品午夜一区二区三区在线观看| 久久亚洲国产成人精品性色| 亚洲美女www午夜| 伊人久久精品| 亚洲 欧美 日韩 国产综合 在线| 欧美国产激情二区三区| 精品人妻无码一区二区三区蜜桃一| 66m—66摸成人免费视频| 日韩精品诱惑一区?区三区| 日本中文字幕精品| 日韩欧美精品中文字幕| 久久久久久久久免费视频| 狠狠久久综合婷婷不卡| 免费成人在线影院| 国产一级性生活| 色七七影院综合| 欧美精品国产白浆久久久久| 国产成年人视频网站| 午夜精品久久久久久| 日本www在线观看| 久久精品日产第一区二区三区精品版| 欧美aaaaaa午夜精品| 日韩精品一区二区在线播放| 久久久精品免费视频|