久久福利_99r_国产日韩在线视频_直接看av的网站_中文欧美日韩_久久一

您的位置:首頁技術文章
文章詳情頁

使用C++11實現Android系統的Handler機制

瀏覽:88日期:2022-09-24 17:34:08

使用C++11實現Android系統的Handler機制

封面出自:板栗懶得很背景

線程作為系統的基礎資源,相信大多數讀者都有使用到。一般情況下我們會直接開一個線程做一些耗時操作,處理完之后讓線程自動結束,資源被系統回收。這種簡單粗暴的方法不少讀者、甚至一些大廠的APP都在用。以Java語言為例,我們可以直接new一個Thread對象,然后覆蓋run方法,最后調一下start方法便可以成功運行一個線程。如果我們每次異步做一些耗時處理都單獨開啟一個線程,比如異步加載網絡圖片這種高并發操作,每張圖片都開一個線程的話,必然會造成線程資源的浪費,而且也沒有很好的方法去處理跨線程通訊的問題。由于語言層面的低成本導致系統的線程資源被濫用,已經成為了一個很普遍的現象。

new Thread(){ @Override public void run() { //Do somethings }}.start()

Handler

  Handler機制通過開啟一個子線程,并進入死循環,不停消費其它線程發送過來的消息,從而達到跨線程通訊的目的。Handler主要用于跨線程通訊,但同時也能在一定程度上復用線程,是一種比較理想的線程使用方式。Android系統Handler主要包含以下三部分:

Handler Looper Message & MessageQueue

Handler顧名思義就是消息的處理類,同時也是消息發送的代理入口,通過調用Handler的相關接口發送一條消息,最終會被轉發到Looper,由Looper把Message加入到隊列的尾部。Looper是消息循環驅動的動力所在,我們規定同一個線程只能擁有一個Looper,當Looper準備好之后會讓線程進入死循環,如果內部的Message隊列不為空時,則會不停的從消息隊列頭部取出一條Message進行消費,直到隊列為空,Looper阻塞線程進入等待狀態。Message內部會記錄著發送消息的Handler,當被消費時就可以找到對應的Handler進行消息處理,最終形成閉環。

使用C++11實現Android系統的Handler機制

實現

下面嘗試使用C++11來實現Android系統Handler機制,該實現主要由AlHandlerThread、AlHandler、AlLooperManager、AlLooper、AlMessageQueue和AlMessage六個類組成。我們規定一個線程只能擁有一個AlLooper,因此需要一個AlLooperManager負責對所有線程的AlLooper對象進行管理,如果當前線程已經擁有了AlLooper對象,則直接使用當前線程的對象,保證AlLooper唯一。而AlMessageQueue則是一個支持線程阻塞和喚醒的消息隊列。AlHandlerThread則是一個封裝了std::thread和AlLooper的簡單線程實現,僅僅是為了方便使用AlLooper,與Android系統中的HandlerThread實現是一致的。

使用C++11實現Android系統的Handler機制

AlHandler

AlHandler提供兩個構造函數,第一個只有Callback參數,該構造函數會默認獲取當前線程的AlLooper,如果當前沒有AlLooper,則會拋出異常。第二個構造函數支持傳入一個AlLooper,該AlLooper對象將會從AlHandlerThread獲取。sendMessage函數負責把AlMessage轉發到AlLooper,值得注意的是,在發送到AlLooper之前會先給AlMessage的成員變量target賦值,也就是當前AlHandler對象的指針。dispatchMessage函數用于在AlLooper中消費消息。

class AlHandler {public: typedef function<void(AlMessage *msg)> Callback;public: AlHandler(Callback callback); AlHandler(AlLooper *looper, Callback callback); void sendMessage(AlMessage *msg) { _enqueueMessage(msg); } void dispatchMessage(AlMessage *msg) { if (callback) { callback(msg); } }private: void _enqueueMessage(AlMessage *msg) { if (this->looper) { msg->target = this; this->looper->sendMessage(msg); } }private: AlLooper *looper = nullptr; Callback callback = nullptr;};

AlLooperManager

AlLooperManager只有一個功能,那就是管理所有創建的AlLooper對象,所以它是一個單例,代碼雖然簡單,但卻很重要。由于操作系統會為每一個線程分配一個唯一的tid(Thread ID,Linux下可以使用pthread_self獲取到),所以我們可以通過tid的唯一性來管理所有線程創建的AlLooper對象。該類的create和get函數分別用于創建新的AlLooper對象,以及獲取緩存的對象。創建一個對象時首先需要檢查緩存中是否存在該線程對應的AlLooper,如果已經存在則應該避免重復創建,直接返回空指針即可。而get函數用于從緩存中獲取一個對象,如果緩存中沒有則返回空指針。remove用于銷毀一個AlLooper,一般會在線程銷毀時使用。這幾個函數都需要保證線程安全。

private: AlLooperManager() : Object() {} AlLooperManager(AlLooperManager &e) : Object() {} ~AlLooperManager() {} /** * 為當前線程創建Looper * @return 當前線程的Looper */ AlLooper *create(long tid) { std::lock_guard<std::mutex> guard(mtx); auto it = looperMap.find(tid); if (looperMap.end() == it) { auto *looper = new AlLooper(); looperMap[tid] = looper; return looper; } return nullptr; } /** * 獲取當前線程的Looper * @return 當前線程的Looper */ AlLooper *get(long tid) { std::lock_guard<std::mutex> guard(mtx); auto it = looperMap.find(tid); if (looperMap.end() == it) { return nullptr; } return it->second; } /** * 銷毀當前線程的Looper */ void remove(long tid) { std::lock_guard<std::mutex> guard(mtx); auto it = looperMap.find(tid); if (looperMap.end() != it) { looperMap.erase(it); auto *looper = it->second; delete looper; } }private: static AlLooperManager *instance; std::map<long, AlLooper *> looperMap; std::mutex mtx;};

AlLooper

AlLooper主要有prepare、myLooper和loop三個靜態函數。prepare用于為當前線程準備一個AlLooper,因為我們規定同一個線程只能擁有一個AlLooper對象,如果嘗試在一個線程重復調用該函數函數將引發異常。myLooper用于獲取當前線程的AlLooper,如果在該函數調用之前沒有調用過prepare將會獲得一個空指針。loop是AlLooper的核心函數,調用該函數后線程將進入死循環,AlLooper會依次從消息隊列頭部取出AlMessage進行消費。前面提到AlMessage有一個名為target的成員變量,這個變量是一個AlHandler對象,所以這里直接調用AlHandler::dispatchMessage函數把消息回傳,由AlHandler進行處理。sendMessage函數則用于在消息隊列尾部插入一條消息。

class AlLooper : public Object {public: /** * 為線程準備一個Looper,如果線程已經存在Looper,則報錯 */ static void prepare() { AlLooper *looper = AlLooperManager::getInstance()->create(Thread::currentThreadId()); assert(nullptr != looper); } /** * 獲取當前線程的Looper * @return 前線程的Looper */ static AlLooper *myLooper() { AlLooper *looper = AlLooperManager::getInstance()->get(Thread::currentThreadId()); assert(nullptr != looper); return looper; } static void exit(); /** * 循環消費消息 */ static void loop() { myLooper()->_loop(); } void _loop() { for (;;) { AlMessage *msg = queue.take(); if (msg) { if (msg->target) { msg->target->dispatchMessage(msg); } delete msg; } queue.pop(); } } void sendMessage(AlMessage *msg) { queue.offer(msg); }private: AlLooper(); AlLooper(AlLooper &e) : Object() {} ~AlLooper();private: AlMessageQueue queue;};

AlMessageQueue和AlMessage

AlMessage比較簡單,主要包含幾個public的成員變量,用于區分消息類型以及附帶一些信息。AlMessageQueue則是一個阻塞隊列,當嘗試從一個空隊列獲取AlMessage時將會造成線程阻塞,如果其它線程向空隊列新增一個AlMessage對象將會喚醒阻塞的線程。這是驅動消息循環消費的重要一環。

class AlMessage {public: int32_t what = 0; int32_t arg1 = 0; int64_t arg2 = 0; Object *obj = nullptr;}class AlMessageQueue : public Object {public: AlMessageQueue() { pthread_mutex_init(&mutex, nullptr); pthread_cond_init(&cond, nullptr); } virtual ~AlMessageQueue() { pthread_mutex_lock(&mutex); invalid = true; pthread_mutex_unlock(&mutex); clear(); pthread_mutex_destroy(&mutex); pthread_cond_destroy(&cond); } void offer(AlMessage *msg) { pthread_mutex_lock(&mutex); if (invalid) { pthread_mutex_unlock(&mutex); return; } queue.push_back(msg); pthread_cond_broadcast(&cond); pthread_mutex_unlock(&mutex); } AlMessage *take() { pthread_mutex_lock(&mutex); if (invalid) { pthread_mutex_unlock(&mutex); return nullptr; } if (size() <= 0) { if (0 != pthread_cond_wait(&cond, &mutex)) { pthread_mutex_unlock(&mutex); return nullptr; } } if (queue.empty()) { pthread_mutex_unlock(&mutex); return nullptr; } AlMessage *e = queue.front(); queue.pop_front(); pthread_mutex_unlock(&mutex); return e; } int size(); void clear();private: pthread_mutex_t mutex; pthread_cond_t cond; std::list<AlMessage *> queue; bool invalid = false;};

AlHandlerThread

AlLooper準備好后就可以在線程中使用了,這里我們把線程和AlLooper封裝到一起方便使用。AlHandlerThread會在內部開啟一個線程,該線程會調用run函數,在線程開始運行后依次調用AlLooper的prepare和loop函數即可進入消息消費流程,AlLooper::exit()用于在線程結束前銷毀AlLooper對象。

class AlHandlerThread {public: AlLooper *getLooper() { return mLooper; }private: void run() { AlLooper::prepare(); mLooper = AlLooper::myLooper(); AlLooper::loop(); AlLooper::exit(); }private: std::thread mThread = thread(&AlHandlerThread::run, this); AlLooper *mLooper = nullptr;};

最后我們創建一個AlHandler對象,并傳入一個從AlHandlerThread獲取的AlLooper對象和一個處理回調函數Callback,便可以讓Handler機制運行起來。由于AlLooper可以是任意一個線程的對象,所以便實現了跨線程的通訊。如果我們把AlMessage封裝成一個'Task',當我們要處理一個耗時任務時,把任務封裝成一個'Task'發送到Handler進行處理,通過該方法可以輕易實現線程的復用,而不需要重復申請銷毀線程。

mThread = AlHandlerThread::create(name);mHandler = new AlHandler(mThread->getLooper(), [this](AlMessage *msg) { /// Do something.});

結語

  以上便是Android系統Handler機制的介紹,以及使用C++11的實現。上面展示的是部分核心代碼,省略了很多,實際操作還需要處理很多問題,比如線程安全、線程的退出、AlLooper的銷毀等。文章源碼出自hwvc項目,感興趣的讀者可以閱讀完整的AlHandlerThread源碼實現。

hwvc項目:

https://github.com/imalimin/hwvc/tree/develop

AlHandlerThread源碼:

https://github.com/imalimin/hwvc/blob/develop/src/common/thread/AlHandlerThread.cpp

到此這篇關于使用C++11實現Android系統的Handler機制的文章就介紹到這了,更多相關C++11 Handler機制內容請搜索好吧啦網以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持好吧啦網!

標簽: Android
相關文章:
主站蜘蛛池模板: 国产欧美精品一区二区 | 精久久久| 久久久久国产 | 在线a视频 | 久久久久久免费视频 | 午夜av电影| 二区三区 | 91aiai| 黄色大片网站 | 中文日韩在线 | 91av国产精品| 97精品超碰一区二区三区 | 亚洲精品国产电影 | 中文字幕 国产精品 | 日韩欧美一区二区三区免费观看 | 免费大片在线观看网站 | 国产精品久久久久一区二区三区 | 欧美精品99| 亚洲精品久久久久久动漫 | 国产成人99久久亚洲综合精品 | 美女视频一区二区三区 | 欧美午夜在线观看 | 色偷偷噜噜噜亚洲男人 | 欧美久久久久久久久久伊人 | 夜夜夜操操操 | www久| 日韩电影专区 | 91久久久久久久久久久久久久久久 | 九九精品视频在线 | 99热热热热 | 日韩在线一区二区三区 | 成人在线视频播放 | 国产精品1区2区在线观看 | 欧美日韩第一 | 国产精品免费观看 | 日本不卡视频 | 亚洲 自拍 另类 欧美 丝袜 | 噜噜噜噜噜色 | 欧美日韩免费一区二区三区 | 在线观看一区二区三区四区 | 久久亚洲国产精品 | 国产区视频在线观看 | 呦一呦二在线精品视频 | 国产精品永久免费视频 | 国产亚洲精品美女久久久久久久久久 | 欧美专区在线观看 | 欧美日韩国产精品一区 | 国产精品国产三级国产aⅴ无密码 | 91精品国产综合久久国产大片 | 老司机在线精品视频 | 欧美日韩国产在线播放 | 国产精品久久久久久久久久 | 国产精品一区久久久久 | 国产精品久久久久久久岛一牛影视 | 久久久久久久久成人 | 国产区精品 | www.日韩三级| 天天操操 | 欧美一级免费观看 | 波多野结衣先锋影音 | 亚洲精品视频一区 | 国产激情精品一区二区三区 | 亚洲国产婷婷香蕉久久久久久99 | 国产精品久久久久久久午夜 | 精品日韩在线观看 | 欧美国产精品一区二区三区 | 男女激情网址 | 欧美日韩成人在线 | 在线观看日韩 | 午夜视频网 | 在线中文| 国产免费一区二区三区 | 色鲁97精品国产亚洲 | 国产成人影院 | 中文字幕第56页 | 毛片在线视频 | 午夜精品久久久久99蜜 | 国产精品1页 | av午夜电影| 国产精品久久久久久久久久久久久 | 涩涩视频在线看 | 国产精品成人免费视频 | 成人欧美一区二区三区白人 | aaaaaa毛片 | 国产午夜一区二区三区 | 国产精品乱码一区二区三区 | 91亚洲国产成人久久精品网站 | 亚洲毛片在线 | 欧美日韩视频在线观看免费 | 美女国产 | 亚洲免费视频在线观看 | 久久不射网 | 成人精品高清 | 国产日韩欧美一区 | 一区二区色 | 天天天天天天天天操 | 日比视频网站 | 国产精品黄网站在线观看 | 国内成人精品2018免费看 | 色www精品视频在线观看 | www日本高清| 色婷婷av一区二区三区软件 | 成人a网| 久久精品99国产精品日本 | 中文字幕欧美在线 | 欧美福利视频 | 国产综合精品一区二区三区 | 欧美激情综合五月色丁香小说 | 亚洲精品成人av | 亚洲综合欧美 | 久久久久久91 | 欧美日韩一区不卡 | 黄毛片网站 | 国产精品视频免费 | 一区二区欧美在线 | 中文字幕一区二区三区日韩精品 | 国产精品久久久久久久7电影 | 国产精品亚洲第一 | 国产精品视频免费观看 | 一区二区三区成人 | 精品国产精品三级精品av网址 | 国产美女啪啪 | 精品国产一区二区三区小蝌蚪 | 一区免费看 | 国产精选一区二区 | 亚洲一区中文 | 亚洲美女视频一区二区三区 | 国产色婷婷精品综合在线播放 | 久久亚洲视频 | 国产成人精品免费 | 9999久久久久 | 欧美久久久久久久久久伊人 | 99精品久久久 | 精品欧美久久 | 韩日精品一区 | 色精品视频| 久久久国产精品入口麻豆 | 在线观看91精品国产入口 | 久久精品亚洲精品国产欧美 | 羞羞视频免费在线观看 | 男女羞羞视频在线观看 | 国产无区一区二区三麻豆 | 免费观看成人毛片 | 免费毛片视频 | 国产免费视频 | 日本全黄裸体片 | 欧美一级黄色片免费看 | 国产精品日本欧美一区二区三区 | 精品一区二区三 | 狠狠干影院 | 日韩中文字幕免费在线 | 欧美一区二区三区视频 | 欧美啪 | 日韩在线视频中文字幕 | 99国产精品视频免费观看一公开 | 国产欧美在线视频 | 亚洲黄色国产 | av影院在线观看 | av先锋资源| 成人天堂资源www在线 | 亚洲欧美高清 | 欧美国产一区二区三区 | 国产精品国产精品国产专区不卡 | 深夜福利1000 | 欧美成人一区二区三区片免费 | 国产高清在线观看 | 久久久性色精品国产免费观看 | 亚洲精品久久久久久久久久久久久 | 免费观看一区二区三区毛片 | 99视频在线| 午夜影院在线观看 | 欧美日本免费一区二区三区 | 北条麻妃一区二区三区在线观看 | 日韩在线视频一区 | 精品国产仑片一区二区三区 | 在线观看视频一区 | 国产永久免费观看 | 欧美色图另类 | 日韩欧美一区二区三区免费观看 | 久久精品无码一区二区日韩av | 宅男lu666噜噜噜在线观看 | 日韩欧美大片在线观看 | 欧美在线a | 国产美女精品人人做人人爽 | 四虎网址 | 美女操网站 | 国产精品久久国产精品99 gif | 久久一| 国产伦精品一区二区三区四区视频 | 午夜精品偷拍 | 午夜小视频在线观看 | 毛片真人毛毛片毛片 | 亚洲免费视频一区 | 亚洲精品免费看 | 无码国模国产在线观看 | 国产 高清 在线 | 国产精品国产三级国产aⅴ原创 | 9色网站| 欧美日韩视频在线观看免费 | 在线观看的av | 欧美日韩毛片 | 97热在线| 国产一区二区自拍视频 | av片在线观看 | 成人超碰 | 日韩在线视频第一页 | 999精品在线 | 自拍视频网 | 久久porn| 亚洲精品乱码久久观看网 | 精品国产青草久久久久福利 | 国产三区在线视频 | 欧美一区二区三区精品 | 国产高清视频一区 | 中文字幕av第一页 | 久久久久久久久久久久久久av | 在线观看精品视频网站 | 欧美视频免费在线 | 亚洲第一色 | 天天干天天干天天干天天射 | 日本三级电影网站 | 在线观看www | 久久天堂 | 狠狠躁夜夜躁人人爽天天高潮 | 日韩成年人视频 | 精品一区二区在线观看 | 久久久99精品免费观看 | 午夜免费福利影院 | 最新中文字幕在线资源 | 太子妃好紧皇上好爽h | 久久综合亚洲 | 日日操夜夜操天天操 | 成人 在线 | 色无欲天天天影视综合网 | 99视频只有精品 | 亚洲在线 | 精品乱子伦一区二区三区 | 精品久久99 | 日韩亚洲欧美综合 | 人人艹人人 | 久久亚洲国产精品 | a一级片在线观看 | 人人插| 精品久久久久久亚洲精品 | 国产黄色av | 国产乱叫456 | 日韩在线观看高清 | 久久免费精品视频 | 欧美一区二区三区精品 | 久久久99精品免费观看 | 国产一区二区三区久久久 | 精品1区2区 | 草草视频在线观看 | 69性欧美高清影院 | 国久久久| 国产毛片精品 | av网站有哪些 | 欧美日韩电影一区二区 | 国产精品一区二区在线 | www成人精品| 日韩一级免费在线观看 | 国产日韩中文字幕 | 亚洲精品乱码久久久久久按摩观 | 亚洲欧美视频 | 久久久久久91 | 日韩久久久久 | 精品视频久久 | 精品在线一区二区 | 亚洲精品一区二区三区蜜桃下载 | 美女国产网站 | 国产特黄一级 | av在线视| 国产精品99久久久久久久vr | 亚洲天天 | av日韩一区 | 最新中文字幕在线资源 | 人人草天天草 | 在线成人国产 | 午夜国产羞羞视频免费网站 | 亚洲精品一区二区在线观看 | 亚洲精选一区二区 | 中文字幕91| 午夜一级黄色片 | 人人玩人人干 | 久久久看片 | 亚洲视频在线观看免费 | 欧美精品成人一区二区三区四区 | 日本黄色a级 | 日本国产一区二区 | 日韩电影一区 | 国产视频一区二区在线观看 | 精品九九 | 国产ts余喵喵和直男多体位 | 精品欧美乱码久久久久久 | 亚洲国产精品99久久久久久久久 | 国产欧美专区 | 国产黄色在线播放 | 精品日韩在线 | 国产色视频在线观看免费 | 一区中文字幕 | av观看免费 | 亚洲国产成人在线观看 | 一区二区三区四区视频 | 亚洲一区二区在线视频 | 日韩欧美国产精品一区二区三区 | 欧美精品一区二区三区视频 | 欧美另类综合 | 天天天插 | 欧美福利视频 | 国产精品毛片一区二区在线看 | 激情毛片 | 久日精品| 成人免费视频网站在线观看 | www.99re| 久久激情视频 | 日韩免费在线观看视频 | 一区二区精品视频 | 国产一二三区在线播放 | 免费看男女www网站入口在线 | 欧美14一18处毛片 | 午夜精品久久久久久久久久久久 | 精品久久久久久久久久久久久久 | 狠狠色狠狠色合久久伊人 | 毛片在线视频 | 免费黄色欧美 | 精品国产精品三级精品av网址 | 亚洲资源在线 | 日韩午夜免费 | 国产亚洲一区二区在线 | 中文字幕在线免费看 | 日日干夜夜骑 | 一本一道久久精品综合 | 欧美日本一区二区三区 | 最新中文字幕 | 亚洲精品一区二区三区 | 国产精品久久久精品 | 欧美亚洲一区 | 国产毛片毛片 | 久久久久久一区 | 久久99视频| 国产精品禁久久精品 | 性色网站| 国产精品久久免费看 | 精品国产九九 | 欧美成人综合视频 | 山岸逢花在线 | 国产二区视频 | 成人午夜小视频 | 日韩第一区 | 国产一区二区视频免费 | 免费看的av | 国产高清在线观看 | 狠狠躁天天躁夜夜添人人 | 成人一级视频在线观看 | 亚洲a级在线观看 | 成人午夜电影在线观看 | 午夜免费小视频 | 中文字幕在线资源 | 国产一级一级特黄女人精品毛片 | 一区二区视频在线 | 亚洲综合区 | 欧美精品1区2区3区 免费亚洲婷婷 | 犬夜叉在线观看 | 欧美一级免费 | 国产精品欧美一区二区三区 | 99看片| 日本在线观看视频一区 | 欧美精品第一页 | 精品国产乱码久久久久久蜜臀 | av片免费 | 欧美激情a∨在线视频播放 成人免费共享视频 | 国产高清精品在线 | 成人免费影院 | 国产精品日本一区二区在线播放 | 精品人伦一区二区三区蜜桃视频 | 久久精品久久久久久 | 欧美二区视频 | 国产高清一级毛片在线不卡 | 欧美一级在线 | 91社区在线高清 | 成人激情在线 | 男人天堂网站 | 国产精品午夜在线观看 | 中文字幕不卡在线88 | 午夜寂寞福利视频 | 不卡成人 | 国产精品欧美一区二区三区 | 国产在线不卡 | 久久作爱视频 | 国产精品久久久久久久久久久久久 | 三区中文字幕 | 亚洲免费视频网 | 国产欧美日韩精品一区二区三区 | 国产精品久久久一区二区 | 国产真实乱全部视频 | 黄色av网站在线免费观看 | 91视频在线播放视频 | 国产男女爽爽爽免费视频 | 国内精品久久精品 | 精品成人av| 精品视频一区二区三区 | 欧美国产日本一区 | 国产精品免费观看 | 国产精品久久久久久久久免费 | 日韩成人免费 | 国产美女永久免费无遮挡 | 欧美最猛性xxxxx亚洲精品 | 爱干视频 | 亚洲小视频 | 亚洲色图88| 一区二区三区国产精品 | 日韩视频在线观看一区二区 | 欧美成人免费一级人片100 | 91电影在线观看 | 久久精品中文字幕 | 国产一区二区三区久久久 | www国产亚洲精品久久网站 | av大片| 九九热这里只有 | 成人免费视频在线观看 | 1区2区视频 | 亚洲一区二区精品视频 | 日干夜干天天干 | 日日干夜夜操 | 亚洲一区二区三区四区在线 | 欧美中文在线 | 大乳videos巨大吃奶 | av大片 | 日韩毛片免费视频一级特黄 | 1000部精品久久久久久久久 | 国产一区二区在线电影 | 伊人网视频在线观看 | 欧美国产一区二区 | 欧美日韩综合视频 | 国产精品免费看 | 国产亚洲精品久久久闺蜜 | 久久精品免费国产 | 男女视频在线免费观看 | 91麻豆精品国产91久久久资源速度 | 日韩视频在线免费观看 | 一区二区三区四区免费观看 | 九色一区 | 久久se精品一区精品二区 | 91精品国产99久久久久久红楼 | 九九热这里只有精品6 | 最新久久精品 | 中文av在线免费观看 | 美女主播精品视频一二三四 | 国产农村妇女精品久久 | 91精品国产色综合久久不卡98口 | 午夜影院在线观看免费 | 久久九九国产精品 | 欧美日韩在线视频免费 | 欧美国产精品一区 | 精品一区二区三区免费毛片爱 | 天堂视频在线 | 欧洲成人在线视频 | 中文字幕免费在线观看视频 | 国产精久 | 成人免费一区二区三区视频网站 | 99免费精品 | 精品国产乱码久久久久久久软件 | 毛片一级| www.色涩涩.com网站 | 日韩成人av在线 | 中文字幕国产区 | 免费在线黄色av | 99热首页| 超碰人人99| 一区二区三区国产视频 | 欧美视频免费在线 | 亚洲第一av | 日韩不卡中文字幕 | 久久久久久91香蕉国产 | 日韩av资源站 | 国产精品69久久久久水密桃 | 午夜精品一区二区三区在线视频 | 午夜免费av | 国产精品www| 国产目拍亚洲精品99久久精品 | 国产伦精品一区二区三区在线 | 成人a在线| 久久精品国产99久久久 | 99精品久久久 | 一级全黄少妇性色生活片免费 | 台湾av在线| 中字精品| 欧美综合一区二区 | 一级久久久 | 国产精品一区二 | 99精品一区二区三区 | 粉嫩在线 | 91精品国产91综合久久蜜臀 | 女同理伦片在线观看禁男之园 | 黑人巨大精品欧美一区二区小视频 | 精品99久久 | 国产精品a久久久久 | 欧美成人猛片aaaaaaa | 国产区在线观看 | 久久久久久黄 | 一区二区三区免费网站 | 五月婷婷丁香在线 | 日本一区二区三区四区不卡视频 | 特级黄一级播放 | 日韩精品日韩激情日韩综合 | 四虎视频| 可以免费观看的av片 | 91免费视频 | 免费在线观看毛片网站 | 免费在线观看成年人视频 | 欧美一区亚洲二区 | 欧美日韩在线观看视频 | 成人不卡| 久久久精品久久久 | 一区二区三区免费 | 国产美女www爽爽爽免费视频 | 亚洲免费在线播放 | 国产毛片毛片 | 黄毛片网站 | 亚洲视频在线视频 | 一级一级毛片 | 国产在线观看免费 | 日韩av免费在线播放 | 欧美全黄 | 久久se精品一区精品二区 | 精品香蕉一区二区三区 | 国产日韩在线视频 | 国产一区二区视频在线 | 欧美精品久久一区 | 日韩欧美一区二区在线观看 | 九九国产| 亚洲综合在线视频 | 亚洲啊v在线 | 99青青草 | 毛片免费观看 | 国产成人综合一区二区三区 | 欧美日韩国产一区二区三区 | 国产精品久久久久久福利一牛影视 | 欧美 日韩 亚洲 一区 | 免费在线观看毛片网站 | 亚洲 欧美日韩 国产 中文 | 国产精品揄拍一区二区久久国内亚洲精 | 欧美一级大片免费 | 91免费在线视频 | 欧美色欧美亚洲另类七区 | 欧美a一级 | 久久久久久久久免费视频 | 亚洲高清视频一区二区 | 亚洲天堂av网 | 黄色一级免费看 | 久久精品欧美 | 夜夜av | 日一日干一干 | 国产精品无码专区在线观看 | 国产成人一区二区三区 | 爱爱视频网站 | 特黄特黄a级毛片免费专区 av网站免费在线观看 | 欧美成年黄网站色视频 | 日本一区二区三区免费观看 | 婷婷色5月| 日韩精品一区二区在线观看视频 | 亚洲午夜精品一区二区三区 | 久久精品国产99国产 | 不卡视频一区二区三区 | 美女h在线观看 | 日本xxx性| av在线免费观看一区二区 | 欧美日韩一级在线观看 | 午夜艹 | 蜜臀视频在线观看 | 懂色中文一区二区在线播放 | 在线中文一区 | 精品无码久久久久国产 | 国产免费高清 | 色婷婷综合久色 | 国产精品美女久久久 | 成人不卡视频 | 在线观看毛片网站 | 777kkk999成人ww | 亚洲国产精品一区 | 精品国产精品国产偷麻豆 | 欧美日韩免费一区二区三区 | 高清国产午夜精品久久久久久 | 夜夜操操| 日本高清中文字幕 | 欧美日韩在线播放 | 国产一级免费视频 | 日韩欧美~中文字幕 | 日韩毛片免费看 | 伊人激情网 | 久久精品国产亚洲一区二区三区 | 日韩在线播放一区二区 | 日韩视频一区 | 超碰人人插 | 国产乱码精品一区二区三区忘忧草 | 狠狠干影院 | 毛片aaa| 久久a毛片| 成人亚洲天堂 | 亚洲精品一区二三区不卡 | 九九99久久| 久久男女视频 | 久久av资源 | 97超碰免费 | 国产精品久久久久久久久久新婚 | av免费在线播放 | 日本黄色一级电影 | 国产精品永久 | 自拍偷拍第一页 | 精品国产18久久久久久二百 | 亚洲国产精品一区二区第一页 | 国产在线第一页 | 天天影视网色香欲综合网无拦截 | 青青草一区二区三区 | 91精品国产日韩91久久久久久 |