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

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

詳解Android中的ActivityThread和APP啟動過程

瀏覽:127日期:2022-09-18 10:16:01
目錄ActiviryThreadActivityThread的初始化主線程Looper的初始化主線程Handler的初始化ApplicationThread及Activity的創建和啟動APP的啟動系統的啟動過程APP的啟動過程APP啟動過程的部分代碼思考總結ActiviryThreadActivityThread的初始化

ActivityThread即Android的主線程,也就是UI線程,ActivityThread的main方法是一個APP的真正入口,MainLooper在它的main方法中被創建。

//ActivityThread的main方法public static void main(String[] args) { ... Looper.prepareMainLooper(); ActivityThread thread = new ActivityThread(); //在attach方法中會完成Application對象的初始化,然后調用Application的onCreate()方法 thread.attach(false); if (sMainThreadHandler == null) {sMainThreadHandler = thread.getHandler(); } ... Looper.loop(); throw new RuntimeException('Main thread loop unexpectedly exited');}

接下來從主線程Looper的初始化和ApplicationThread及Activity的創建啟動兩方面,通過源碼了解學習下大致的流程。

主線程Looper的初始化

Looper.prepareMainLooper();相關的代碼如下

//主線程Looper的初始化public static void prepareMainLooper() { prepare(false); synchronized (Looper.class) {if (sMainLooper != null) { throw new IllegalStateException('The main Looper has already been prepared.');}sMainLooper = myLooper(); }}//普通線程Looper的初始化public static void prepare() { prepare(true);}private static void prepare(boolean quitAllowed) { if (sThreadLocal.get() != null) {throw new RuntimeException('Only one Looper may be created per thread'); } sThreadLocal.set(new Looper(quitAllowed));}

看過Handler源碼就知道,主線程Looper的初始化和普通線程Looper的初始化很相似,但還是有以下幾個區別

1.普通線程的Prepare()默認quitAllowed參數為true,表示允許退出,而主線程也就是ActivityThread的Looper參數為false,不允許退出。這里的quitAllowed參數,最終會傳遞給MessageQueue,當調用MessageQueue的quit方法時,會判斷這個參數,如果是主線程,也就是quitAllowed參數為false時,會拋出異常。

//Looper的退時會判斷quitAllowedvoid quit(boolean safe) { if (!mQuitAllowed) {throw new IllegalStateException('Main thread not allowed to quit.'); } synchronized (this) {... }}

2.我們注意到主線程Looper初始化之后,賦值給了成員變量sMainLooper,這個成員的作用就是向其他線程提供主線程的Looper對象。這下我們就應該知道為什么Looper.getMainLooper()方法能獲取主線程的Looper對象了

public static Looper getMainLooper() { synchronized (Looper.class) {return sMainLooper; }}主線程Handler的初始化

在ActivityThread的main方法中我們注意到一行代碼:

ActivityThread thread = new ActivityThread();thread.attach(false);if (sMainThreadHandler == null) { sMainThreadHandler = thread.getHandler();}

見名知意,這是獲取主線程的Handler,那么主線程的Handler是在什么時候初始化的呢?

//與之相關的代碼如下://ActivityThread的成員變量final H mH = new H();final Handler getHandler() { return mH;}

從以上代碼中可以看到,主線程的Handler作為ActivityThread的成員變量,是在ActivityThread的main方法被執行,ActivityThread被創建時而初始化,而接下來要說的ApplicationThread中的方法執行以及Activity的創建都依賴于主線程Handler。至此我們也就明白了,主線程(ActivityThread)的初始化是在它的main方法中,主線程的Handler以及MainLooper的初始化時機都是在ActivityThread創建的時候。

ApplicationThread及Activity的創建和啟動

以上的代碼和流程,就是對 MainLooper 和 ActivityThread 的初始化,我們接下來看一下 ActivityThread 的初始化及其對應的 attach 方法,在thread.attach方法中,ActivityManagerService通過attachApplication方法,將ApplicationThread對象綁定到ActivityManagerService,ApplicationThread是ActivityThread的私有內部類,實現了IBinder接口,用于ActivityThread和ActivityManagerService的所在進程間通信。

//ActivityThread的attach方法:private void attach(boolean system) { ... if (!system) {final IActivityManager mgr = ActivityManager.getService();try { mgr.attachApplication(mAppThread);} catch (RemoteException ex) { throw ex.rethrowFromSystemServer();}else{ ...} }}//ActivityManagerService中的方法:public final void attachApplication(IApplicationThread thread) { synchronized (this) {int callingPid = Binder.getCallingPid();final long origId = Binder.clearCallingIdentity();attachApplicationLocked(thread, callingPid);Binder.restoreCallingIdentity(origId); }}

這里的個人理解是:在每個ActivityThread(APP)被創建的時候,都需要向ActivityManagerService綁定(或者說是向遠程服務AMS注冊自己),用于AMS管理ActivityThread中的所有四大組件的生命周期。

上述AMS的代碼中attachApplicationLocked方法比較復雜,主要功能有兩個,詳見注釋,這里忽略了很多代碼細節,具體的流程可以看源碼

//AMS中的方法,主要功能有以下兩步private final boolean attachApplicationLocked(IApplicationThread thread, int pid) { ... //主要用于創建Application,用調用onCreate方法 thread.bindApplication(...); ... //主要用于創建Activity if (mStackSupervisor.attachApplicationLocked(app)) {... }}

1.thread.bindApplication:主要用于創建Application,這里的thread對象是ApplicationThread在AMS中的代理對象,所以這里的bindApplication方法最終會調用ApplicationThread.bindApplication()方法,該方法會向ActivityThread的消息對應發送BIND_APPLICATION的消息,消息的處理最終會調用Application.onCreate()方法,這也說明Application.onCreate()方法的執行時機比任何Activity.onCreate()方法都早。

//ActivityThread中的bindApplication方法public final void bindApplication(...) { ... // 該消息的處理,會調用handleBindApplication方法 sendMessage(H.BIND_APPLICATION, data);}//ActivityThread中的handleBindApplication方法private void handleBindApplication(AppBindData data) { ... try {Application app = data.info.makeApplication(data.restrictedBackupMode, null);mInitialApplication = app;...try { mInstrumentation.callApplicationOnCreate(app);} catch (Exception e) {} } finally { }} //LoadedApk中的方法,用于創建Applicationpublic Application makeApplication(boolean forceDefaultAppClass, Instrumentation instrumentation) { //如果存在Application的實例,則直接返回,這也說明Application是個單例 if (mApplication != null) {return mApplication; } Application app = null; //...這里通過反射初始化Application if (instrumentation != null) {try { //調用Application的onCreate方法 instrumentation.callApplicationOnCreate(app);} catch (Exception e) {} } return app;}

2.mStackSupervisor.attachApplicationLocked(app):用于創建Activity,mStackSupervisor是AMS的成員變量,為Activity堆棧管理輔助類實例,該方法最終會調用ApplicationThread類的scheduleLaunchActivity方法,該方法也是類似于第一步,向ActivityThread的消息隊列發送創建Activity的消息,最終在ActivityThread中完成創建Activity的操作。

boolean attachApplicationLocked(ProcessRecord app) throws RemoteException { ... if (realStartActivityLocked(hr, app, true, true)) {... } ...}final boolean realStartActivityLocked(ActivityRecord r, ProcessRecord app, boolean andResume, boolean checkConfig) throws RemoteException { ... try {//調用ApplicationThread的scheduleLaunchActivity用于啟動一個Activityapp.thread.scheduleLaunchActivity(...); } catch (RemoteException e) { }}

ApplicationThread的scheduleLaunchActivity方法會向ActivityThread發送LAUNCH_ACTIVITY信息,用于啟動一個Activity,該消息的處理會調用ActivityThread的handleLaunchActivity方法,最終啟動一個Activity

以上就是從ActivityThread的main方法執行到Activity的創建之間的流程,至于ActivityThread的main方法執行時機,以及執行前的流程和Activity的具體創建過程,可以接著看APP的啟動過程

APP的啟動系統的啟動過程

在學習APP的啟動之前先簡單了解下系統的啟動,有助于我們更好的學習APP的啟動。系統的啟動過程很復雜,這里簡單化,只關心大致流程和涉及到的一些名詞以及相關類的作用

APP的啟動可以簡單總結為一下幾個流程:

加載BootLoader --> 初始化內核 --> 啟動init進程 --> init進程fork出Zygote進程 --> Zygote進程fork出SystemServer進程

詳解Android中的ActivityThread和APP啟動過程

系統中的所有經常進程都是由Zygote進程fork出來的 SystemServer進程是系統進程,很多系統服務,例如ActivityManagerService、PackageManagerService、WindowManagerService…都是存在該進程被創建后啟動 ActivityManagerServices(AMS):是一個服務端對象,負責所有的Activity的生命周期,AMS通過Binder與Activity通信,而AMS與Zygote之間是通過Socket通信 ActivityThread:本篇的主角,UI線程/主線程,它的main()方法是APP的真正入口 ApplicationThread:一個實現了IBinder接口的ActivityThread內部類,用于ActivityThread和AMS的所在進程間通信 Instrumentation:可以理解為ActivityThread的一個工具類,在ActivityThread中初始化,一個進程只存在一個Instrumentation對象,在每個Activity初始化時,會通過Activity的Attach方法,將該引用傳遞給Activity。Activity所有生命周期的方法都有該類來執行APP的啟動過程

APP的啟動,我們使用一張圖來說明這個啟動過程,順便也總結下上面所說的ActivityThread的main方法執行到Activity的創建之間的流程。

詳解Android中的ActivityThread和APP啟動過程

1.點擊桌面APP圖標時,Launcher的startActivity()方法,通過Binder通信,調用system_server進程中AMS服務的startActivity方法,發起啟動請求

2.system_server進程接收到請求后,向Zygote進程發送創建進程的請求

3.Zygote進程fork出App進程,并執行ActivityThread的main方法,創建ActivityThread線程,初始化MainLooper,主線程Handler,同時初始化ApplicationThread用于和AMS通信交互

4.App進程,通過Binder向sytem_server進程發起attachApplication請求,這里實際上就是APP進程通過Binder調用sytem_server進程中AMS的attachApplication方法,上面我們已經分析過,AMS的attachApplication方法的作用是將ApplicationThread對象與AMS綁定

5.system_server進程在收到attachApplication的請求,進行一些準備工作后,再通過binder IPC向App進程發送handleBindApplication請求(初始化Application并調用onCreate方法)和scheduleLaunchActivity請求(創建啟動Activity)

6.App進程的binder線程(ApplicationThread)在收到請求后,通過handler向主線程發送BIND_APPLICATION和LAUNCH_ACTIVITY消息,這里注意的是AMS和主線程并不直接通信,而是AMS和主線程的內部類ApplicationThread通過Binder通信,ApplicationThread再和主線程通過Handler消息交互。 ( 這里猜測這樣的設計意圖可能是為了統一管理主線程與AMS的通信,并且不向AMS暴露主線程中的其他公開方法)

7.主線程在收到Message后,創建Application并調用onCreate方法,再通過反射機制創建目標Activity,并回調Activity.onCreate()等方法

8.到此,App便正式啟動,開始進入Activity生命周期,執行完onCreate/onStart/onResume方法,UI渲染后顯示APP主界面

APP啟動過程的部分代碼思考

在上面學習APP的啟動過程中,看源碼的同時注意到一個代碼,就是主線程Handler在接收到LAUNCH_ACTIVITY創建Activity的消息后,創建Activity的部分代碼如下:

//主線程Handler接收到創建Activity的消息LAUNCH_ACTIVITY后,最終會調用performLaunchActivity方法//performLaunchActivity方法會通過反射去創建一個Activity,然后會調用Activity的各個生命周期方法private Activity performLaunchActivity(ActivityClientRecord r, Intent customIntent) { ... ContextImpl appContext = createBaseContextForActivity(r); Activity activity = null; try {//這里是反射創建Activityjava.lang.ClassLoader cl = appContext.getClassLoader();activity = mInstrumentation.newActivity(cl, component.getClassName(), r.intent);StrictMode.incrementExpectedActivityCount(activity.getClass());r.intent.setExtrasClassLoader(cl);r.intent.prepareToEnterProcess();if (r.state != null) { r.state.setClassLoader(cl);} } try {//這里注意,又調用了一次Application的創建方法,但是前面分析過,Application是個單例,所以這里的實際上是獲取Application實例,但是這里為什么會再次調用創建Application的方法呢?Application app = r.packageInfo.makeApplication(false, mInstrumentation);... } ... return activity;}

在上面的代碼中,簡單注釋了一下在Activity的創建方法中,會再次調用Application的創建方法(第一次調用是在接收到BIND_APPLICATION消息的時候),個人覺得這里再次調用Application的創建方法,除了獲取已經存在的Application實例這種情況,另外一種情況還有可能是要創建的這個Activity屬于另外一個進程,當去啟動這個新進程中的Activity時,會先去創建新進程和Application實例,因為我們知道一個常識:

1.APP中有幾個進程,Application會被創建幾次

2.新進程中所有變量和單例會失效,因為新進程有一塊新的內存區域

那么這兩點的關系就是,因為新進程中Application實例會為空,所以會再次去創建Application實例,這也就是第一點中我們所說的常識:APP中有幾個進程,Application會被創建幾次

//創建Application的方法public Application makeApplication(boolean forceDefaultAppClass, Instrumentation instrumentation) { //如果存在Application的實例,則直接返回,這也說明Application是個單例 if (mApplication != null) {return mApplication; } Application app = null; //...創建Application return app;}

那么依次類推,Service作為四大組件之一,類似于Activity的創建和啟動,創建Service的方法中會不會也調用了創建Application的方法(makeApplication方法),答案是肯定的!和Activity的創建類似,當我們調用startService的時候,也是通過Binder向AMS發送創建Service的請求,AMS準備后再向APP進程發送scheduleCreateService的請求,然后主線程handle收到CREATE_SERVICE的消息,調用handleCreateService創建Service的方法。在創建Service的方法handleCreateService中也調用了創建Application的方法,具體代碼看源碼吧。所以我們也徹底明白了為什么APP中有幾個進程,Application會被創建幾次,以及Application為什么是個單例。

總結

APP的啟動過程很復雜,代碼錯綜交橫,這里分析了大概流程,學習這部分的過程中還是有很多收獲,例如知道了AMS與主線程的關系,主線程main方法中就是APP的入口,Binder通信機制和handler消息機制在這個過程中的重要作用,Application的創建時機以及Application為什么是單例,為什么有幾個進程就創建幾個Application…等等 。

以上就是詳解Android中的ActivityThread和APP啟動過程的詳細內容,更多關于Android ActivityThread APP啟動過程的資料請關注好吧啦網其它相關文章!

標簽: Android
相關文章:
主站蜘蛛池模板: 久久国产精品99久久久久久牛牛 | 伊人av超碰久久久麻豆 | 欧美黄色一区 | 久久久www成人免费精品 | 亚洲人成人一区二区在线观看 | 国产精品久久久久久久久久妇女 | 精品专区| 亚洲嫩草| 日韩小视频在线播放 | 久久久一区二区三区 | 日日摸天天做天天添天天欢 | 国产精品久久久久精 | 日本成人中文字幕 | 少妇一级淫免费放 | 成人久久久精品乱码一区二区三区 | 91精品综合久久久久久五月天 | 国产成人久久 | 美女视频一区 | 五月婷婷激情 | 综合久久综合 | 午夜精品偷拍 | 欧美日韩一区在线观看 | 国产一级特黄 | 狠狠操操| 午夜av电影| 日韩视频在线免费观看 | 久久久久女人精品毛片九一韩国 | 成人欧美一区二区三区白人 | 中文久久 | 国产精品69久久久久水密桃 | 一区二区三区四区免费 | 91精品免费在线观看 | 天堂亚洲 | 天堂资源网 | 亚洲精品一区二区三区不 | 密室大逃脱第六季大神版在线观看 | 在线免费看a | 久久久久久久久国产精品 | 国产精品久久久久久久久久免费 | 国产亚洲精品美女久久久久久久久久 | 国产一区精品视频 | 亚洲艹| 久久国产精品久久久久久 | 国产精品一区二区三 | 久草电影网 | 久久精品成人 | 91不卡 | 久久久久久久久久久久久av | 久在线| 香蕉久久av一区二区三区 | 欧美午夜视频在线观看 | 国产在线观看一区 | 日韩免费一区二区 | 午夜影院免费 | 久热精品在线 | 精品国产1区2区3区 在线国产视频 | 亚洲国产高清视频 | 国产二区三区 | 特级黄一级播放 | 男女小网站 | 日韩高清中文字幕 | av观看 | 午夜私人影院 | 中文字幕亚洲精品 | 日韩欧美在线一区二区 | 日韩欧美专区 | 日韩99| 一区亚洲| 在线免费观看av片 | 日韩国产在线观看 | 日韩精品一区二区三区中文在线 | 亚洲社区在线 | 在线国产视频 | 中字幕视频在线永久在线观看免费 | 亚洲免费视频大全 | 欧美成人一区二区三区片免费 | 爱草在线| 国产亚洲欧美一区二区三区 | 欧美精品在线免费观看 | 97超碰在线免费 | 一区二区三区高清 | 一区在线视频 | 久久久亚洲一区 | 99精品免费在线 | 日韩成人免费av | 国产精品毛片无码 | 久久久国产日韩 | 亚洲一区二区三区视频 | 成人v片| 一区在线视频 | 99亚洲精品| 免费观看的黄色 | 国产一在线 | 福利片在线观看 | 久久国产精品一区 | 日本久久精品视频 | 亚洲欧美综合 | 欧美精品1区2区 | 国产第一亚洲 | 日韩欧美在线观看一区二区三区 | 成人激情免费视频 | 一区二区中文 | 亚洲免费网 | 精品一区二区三区四区五区 | 久久久久综合狠狠综合日本高清 | 日韩欧美a级v片免费播放 | 91精品国产乱码久久久久久久久 | 久久国产一区二区 | 欧美激情一区二区三级高清视频 | 久久香蕉国产 | 性色av网| 久久久久久综合 | 午夜激情在线 | 羞羞的视频在线免费观看 | 亚洲男人的天堂网站 | 天天天干天天射天天天操 | 国产色| 3bmm在线观看视频免费 | 国产精品乱码一区二区三区 | 最新国产成人 | 日韩精品成人 | 一区二区三区免费 | 亚洲精品二区 | 国产一区二区三区免费视频 | 男女做爰高清无遮挡免费视频 | 国产精品久久久久国产a级 欧美日本韩国一区二区 | 久久久国产一区二区三区 | 在线观看免费国产 | 九九热精品视频 | 97伦理在线 | 日韩在线看片 | 一区二区不卡 | 91免费观看国产 | 精品1区2区 | 成人欧美一区二区三区黑人孕妇 | 日本不卡高字幕在线2019 | 偷拍自拍网站 | 国产日韩精品一区二区 | 91精品久久久久久 | 日韩精品视频免费在线观看 | 国产一区二区三区免费在线 | 国产精品久久久久久久久久10秀 | 中文成人在线 | 性一交一乱一透一a级 | 538在线精品 | 亚洲中出 | 欧美视频在线播放 | 国产成人精品一区二区三区四区 | 日韩在线视频精品 | 亚洲性在线 | 国产精品一区二区三区四区五区 | 日韩成人精品在线观看 | 国产精品精品 | 依人成人综合网 | 久久久久国产精品 | 亚洲综合色视频在线观看 | 91精品国产高清一区二区三区 | 国产区在线观看 | 日韩国产欧美一区 | 日韩在线一区二区三区 | 日本久久精品一区二区 | 国产精品午夜电影 | 免费观看一区二区三区毛片 | av免费网站 | 欧美综合精品 | 99草草| 久久99视频| 成人欧美 | 国产精品美女久久久久久久久久久 | 99视频免费观看 | av在线综合网 | 久久久av亚洲男天堂 | www.国产| 日韩欧美国产精品综合嫩v 久久久久久国产精品高清 国产目拍亚洲精品99久久精品 | 在线日韩欧美 | 国产欧美精品区一区二区三区 | 全免一级毛片 | 亚洲一区二区三区在线播放 | 国产成人片 | 狠狠撸在线 | 99成人| 99精品久久精品一区二区爱城 | 国产精品久久久久久久久久久新郎 | yy6080久久伦理一区二区 | 国产三级网站 | 国产精品爱久久久久久久 | 九色91视频 | 第一色站 | 一级国产视频 | 成人在线视频播放 | 天天干天天爽 | 国产精品久久视频 | 中文字幕高清视频 | 欧美激情在线狂野欧美精品 | 日韩欧美一级精品久久 | 97视频在线 | 天天草草草 | 天天舔日日干 | 国产91色在线 | 亚洲 | 成人免费视频在线观看 | 久久国产精品久久久久久 | 国产精品久久一区 | 成人在线网 | 91在线精品一区二区 | 久久69精品久久久久久久电影好 | av成人在线观看 | 国产成人精品免高潮在线观看 | 最近免费中文字幕在线视频2 | 久久作爱视频 | 成人h视频| 国产欧美精品一区二区色综合朱莉 | 日韩不卡一区二区 | 久久久久中文 | 久久精品在线观看视频 | 天天干天天操天天干 | 中文字幕一区二区在线观看 | 亚洲黄色免费观看 | 国产精品第一区第27页 | 日韩中出 | 一区二区中文字幕 | 天天看片天天干 | 久国久产久精永久网页 | 日穴视频在线观看 | 九色91| 国产精品2019 | 欧美激情一区二区三区 | 少妇性l交大片免费一 | 全黄大全大色全免费大片 | 亚洲二区在线视频 | 久久免费在线观看 | 国产精品久久久久久久久久99 | 亚洲精品一区二区在线观看 | 久久视频一区 | 国产91 在线播放 | 国产一级淫免费播放m | 国产精品一区二区无线 | 中文字幕av亚洲精品一部二部 | 在线观看欧美一区二区三区 | 欧美综合视频在线观看 | 午夜婷婷色| 91精品久久久久久久 | h视频在线免费 | 成人久久久精品乱码一区二区三区 | 午夜免费视频 | 欧美亚洲免费 | 色综合天天天天做夜夜夜夜做 | 日韩欧美在线观看一区 | 国产一区二区三区精品久久久 | 亚洲日本乱码在线观看 | 久久久精品一区二区 | 国产麻豆乱码精品一区二区三区 | 国产农村妇女精品久久 | 日本一区二区成人 | 亚洲高清视频网站 | 日韩精品一区二区三区在线观看 | 日韩蜜桃 | 国产精品久久久久久吹潮 | 欧美日本在线观看 | 久久99深爱久久99精品 | 国产噜噜噜噜噜久久久久久久久 | 精品久久一区二区三区 | 国产精品久久久久久久久免费丝袜 | 在线国产欧美 | 91在线观看免费 | 国产中文字幕一区 | 亚洲精彩视频在线 | 97国产在线| 中文字幕2021 | 91福利在线播放 | 日韩精品1区2区3区 国产精品国产成人国产三级 | 欧美亚洲 | 婷婷成人在线 | 老司机福利在线观看 | 日韩免费片 | 国产网站在线 | 久久九九视频 | 99久久久无码国产精品 | 久久国产精品免费一区二区三区 | 色先锋资源| 欧洲成人在线视频 | 999精品视频 | 麻豆成人在线 | 亚洲精品久久久久国产 | 奇米影视四色777me | 国产精品日韩欧美 | 一区二区在线免费观看 | 中文字幕视频在线 | 国产乱码精品一品二品 | 午夜影院在线 | 欧美日韩精品久久久 | 亚洲成人免费 | 福利片在线观看 | 久久久久无码国产精品一区 | 国产1页 | 欧美一区二区三区视频 | 91尤物网站网红尤物福利 | 国产一区二区三区在线免费观看 | 精品久久久久久久久久 | 午夜视频网站 | 日韩一区中文 | 91视频免费在线 | 欧美午夜视频在线观看 | 亚洲精品美女久久 | 日韩精品视频在线播放 | 综合久久国产九一剧情麻豆 | 久久久一 | 男女网站在线观看 | 波多野结衣一区二 | 久久国产精品视频 | 在线色网 | 欧美日本韩国一区二区 | 在线观看亚洲一区二区 | 国产精品美女一区二区三区四区 | 天堂网av2020 | 青青草久 | 一区二区欧美在线 | 久久综合九色综合欧美狠狠 | 性大毛片视频 | 久操视频在线 | 亚洲免费电影一区 | 亚洲一区二区精品在线观看 | 欧美精品99 | 息与子猛烈交尾一区二区 | 成人欧美一区二区三区在线播放 | 亚洲欧美精选 | 中文字幕亚洲一区二区三区 | 在线观看免费av网 | 91蜜桃视频 | 九九久久精品 | 国产精品1区| 欧美国产日韩一区二区 | 国产情侣一区二区三区 | 色先锋资源 | 国产免费黄色 | 午夜激情视频在线观看 | 99久久99热这里只有精品 | 午夜国产一级片 | 一区二区在线免费观看 | 久久99精品久久久久久园产越南 | 久久精品亚洲精品国产欧美 | 欧美日韩成人在线观看 | 精品一区二区在线播放 | 日韩特黄一级欧美毛片特黄 | 久久毛片 | 亚洲国产精品99久久久久久久久 | 国产综合精品一区二区三区 | 亚洲国产精品久久 | 亚洲一区在线日韩在线深爱 | 欧美日韩在线免费观看 | 性视频一区二区 | 成人福利在线 | 亚洲国产成人一区二区精品区 | 91精彩视频 | 一级在线观看视频 | 久久久久久久久综合 | 男女免费在线观看视频 | 午夜av电影院| 精品成人 | 欧美色视 | 国产精品一区久久久久 | 日韩啊啊啊 | 亚洲精品在线看 | 日韩欧美一区二区三区四区 | 日本久久久影视 | 成年人免费看 | 日韩视频一区 | 久久99久久98精品免观看软件 | 欧美jizzhd精品欧美巨大免费 | 成人免费在线电影 | av激情在线| 91嫩草在线 | 国产精品欧美一区二区三区 | 老司机在线精品视频 | 国产91网| 香蕉久久av一区二区三区 | 日韩精品一区二区三区四区视频 | 久热久爱| 日韩欧美黄色 | 国产免费一区二区三区最新不卡 | 一区二区影院 | 日韩五码在线 | 成年人看的羞羞网站 | 日韩第一区 | 亚洲国产高清视频 | 欧美专区在线观看 | 亚洲欧美精品 | 欧美成人免费一级人片100 | 99九九久久| 天天天天干| 亚洲首页 | 精品99在线| 一级免费毛片 | 99国产精品99久久久久久 | 欧美大片免费高清观看 | 精品欧美乱码久久久久久1区2区 | 大象视频成人在线观看 | 精品国产乱码久久久久久蜜柚 | 国产一区二区三区免费 | 精品国产一区二区 | 欧美日韩大片在线观看 | 久久精品欧美一区二区三区不卡 | 色av综合在线 | 欧美精品亚洲精品日韩精品 | 欧美成人午夜视频 | 美女一区二区三区四区 | 亚洲精品18| 欧美精品在线视频 | 久久精品一区二区三区四区 | 久久精品电影网 | 日本一区二区精品视频 | 成年人综合网 | 亚洲成人免费视频在线观看 | 成人伊人| 五月天在线婷婷 | 欧美日韩激情在线 | 日本亚洲最大的色成网站www | 精品在线一区二区 | www中文字幕 | 99久热在线精品视频观看 | 国产伦精品一区二区三毛 | 91小视频 | 三区免费视频 | 精品三级三级三级三级三级 | 午夜亚洲| 国产精品中文字幕在线播放 | 九九热这里只有精品在线观看 | 色性网| 免费在线看a| 最新日韩在线观看视频 | 免费看片91 | 国产91视频一区二区 | 亚洲xxxx3d | 日韩成人免费视频 | 免费99精品国产自在在线 | 欧美一级大片免费 | 欧美精品欧美极品欧美激情 | 亚洲 中文 欧美 日韩 在线观看 | 在线免费看黄视频 | 99国产精品99久久久久久 | 婷婷综合 | 中文字幕一区二区三 | 日av一区 | 91高清视频在线观看 | 国产一区二区视频在线 | 天天久久 | 国产超碰在线 | 中文字幕亚洲视频 | 久久久精品免费观看 | 亚洲精选一区 | 久久久久一区二区 | 国产视频久久久久 | 99re久久 | 男女深夜视频 | a久久| 欧美中文字幕在线观看 | 久久久精品免费观看 | 97在线视频免费 | 在线日韩中文字幕 | 国产欧美精品一区二区色综合朱莉 | 久久天天躁狠狠躁夜夜躁2014 | 久久精彩视频 | 成人福利视频 | 亚洲精品视频导航 | 免费成人在线观看视频 | 成人久久久久久久 | 精品久久精品 | av网站推荐| 国产黄色大片 | 久色成人| 不卡欧美 | 不卡的毛片 | 免费啪啪网站 | 热久久免费视频 | 国产丝袜视频 | 99精品一级欧美片免费播放 | 久久国产精品99久久久久久牛牛 | 国产在线不卡一区 | 羞羞视频在线播放 | 黄色免费av| 国产裸体bbb视频 | 久久视频一区 | 精品久久亚洲 | 国产一级一级特黄女人精品毛片 | 亚洲欧美日韩另类精品一区二区三区 | 成人免费视频网站 | 欧美影院| 日本精品视频在线观看 | 午夜精品影院 | 在线观看国产www | 欧洲一区二区在线观看 | 综合久久综合 | 欧美国产日韩视频 | 日韩精品在线播放 | 精品一二三区在线观看 | 影音先锋中文字幕一区 | 在线不卡a资源高清 | 在线观看成人小视频 | 中文字幕第七页 | 国产精品热 | 欧美精品在线观看 | 成人国产精品久久久 | 一区二区三区在线 | 一级毛片免费完整视频 | 91在线国产观看 | 色综合久久久 | 91看片网站 | 国产乱肥老妇国产一区二 | 亚洲中字在线 | 91社区在线高清 | 日韩av网站在线 | 天天操天天舔天天爽 | 国产成人小视频 | 国产色视频在线观看免费 | 在线观看国产精品一区二区 | 成人午夜精品一区二区三区 | 亚洲精品久久久久午夜 | 国产视频导航 | 国产综合视频在线观看 | 国产高清精品一区二区三区 | 精品一区二区三区国产 | 91在线免费看 | 操操操日日日 | 国产高清视频在线 | 草草视频在线免费观看 | 98精品国产高清在线xxxx天堂 | 国产欧精精久久久久久久 | 精品国产一区探花在线观看 | 久草 在线| 国产成人精品久久二区二区 | 久久精品亚洲欧美日韩精品中文字幕 | 精品久久香蕉国产线看观看亚洲 | 久久另类ts人妖一区二区 | 日本欧美久久久久免费播放网 | 国产精品久久久久免费a∨ 欧洲精品一区 | 成年人在线观看 | 欧美视频一区二区 | 99久久久国产精品美女 | 亚洲日本韩国欧美 | 久久精品久久久久久久久久久久久 | 免费成人在线观看视频 | 精品免费久久久久久久苍 | 亚洲国产一区二 | 国产一区二区三区四 | 噜噜噜噜狠狠狠7777视频 | 精品国产乱码久久久久久闺蜜 | 国产精品免费视频一区 | 亚洲国产精品成人久久久 | 亚洲精品视频在线 | 乳色吐息在线观看 | 九九资源站 | 无码国模国产在线观看 | 国产精品揄拍一区二区久久国内亚洲精 | 在线视频一二区 | 浴室洗澡偷拍一区二区 | 美国黄色毛片女人性生活片 | 亚洲精品中文字幕在线观看 | 国产精品久久免费视频 | 午夜爽 | 欧美大片一区二区 | 断背山在线 | 亚洲网站久久 | 一区二区三区四区 | 国产精品久久久久久久久岛 | 男女啪啪免费网站 | 久久久久综合狠狠综合日本高清 | 精品一区二区三区免费 | 亚洲天堂第一页 | 亚洲一区在线视频 | 在线看免费的a | 看免费毛片 | 久久久久国产一级毛片 | 欧美色综合 | 国产精品久久一区 | 亚洲国产成人久久 | 国产片久久 | 欧美亚洲成人一区 | 国产精品一区二区免费 | 在线观看国精产品二区1819 | 国产精品伊人 | 91久久精品一区二区二区 | 国产精品视频网 | 国产福利在线观看 | 国产成人高清精品免费5388 | 老司机精品福利视频 | 成人久久精品 | h视频在线免费观看 | 一区二区三区在线 | 欧 | 午夜影晥 | 成人影 | 久久久久久免费免费 | 亚洲欧美v国产一区二区 | 久久av免费| 中文字幕一区在线 | 日韩精品久久久久 | 成年人黄色一级片 | 欧美日本韩国一区二区三区 | 久久精品亚洲一区二区 | 先锋影音av资源站 | 视频一区二区三区在线观看 | 国产成人免费 | 一本一道久久久a久久久精品91 | 久久综合久久久 | 免费久久99精品国产婷婷六月 | 精品视频在线免费观看 | 国产精品无码永久免费888 | 亚洲一区二区三区四区五区中文 | 国外成人在线视频 | 欧美成人综合视频 | 欧美久久久久久久久久 | 国产一级免费在线观看 | h片在线免费观看 | av在线免费观看一区二区 | 国产日韩欧美一区 | 欧洲精品在线观看 | 特黄特黄a级毛片免费专区 av网站免费在线观看 |