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

Android進程絕殺技--forceStop

開發(fā) 開發(fā)工具
話說Android開源系統(tǒng)擁有著App不計其數(shù),百家爭鳴,都想在這“大爭之世”尋得系統(tǒng)存活的一席之地。然則系統(tǒng)資源有限,如若都割據(jù)為王,再強勁的CPU也會忙不過來,再龐大的內(nèi)存終會消耗殆盡,再大容量的電池續(xù)航終會曇花一現(xiàn)。

 一.概述

1.1 引言

話說Android開源系統(tǒng)擁有著App不計其數(shù),百家爭鳴,都想在這“大爭之世”尋得系統(tǒng)存活的一席之地。然則系統(tǒng)資源有限,如若都割據(jù)為王,再強勁的CPU也會忙不過來,再龐大的內(nèi)存終會消耗殆盡,再大容量的電池續(xù)航終會曇花一現(xiàn)。

面對蕓蕓眾生,無盡變數(shù),系統(tǒng)以不變應(yīng)萬變,一招絕殺神技forceStop騰空出世,此處以adb指令的方式為例來說說其內(nèi)部機理:

force-stop命令殺掉所有用戶空間下的包名pkgName相關(guān)的信息,也可以通過--user來指定用戶Id。 當(dāng)執(zhí)行上述am指令時,則會觸發(fā)調(diào)用Am.java的main()方法,接下來從main方法開始說起。

1.2 Am.main

[-> Am.java]

1.3 Am.run

[-> Am.java]

1.4 Am.onRun

[-> Am.java]

1.***m.runForceStop

[-> Am.java]

當(dāng)不指定userId時,則默認(rèn)為UserHandle.USER_ALL。

1.6 AMP.forceStopPackage

[-> ActivityManagerNative.java ::AMP]

1.7 AMN.onTransact

[-> ActivityManagerNative.java]

MP.forceStopPackage來運行在執(zhí)行adb時所創(chuàng)建的進程,經(jīng)過Binder Driver后,進入system_server進程的一個binder線程來執(zhí)行AMN.forceStopPackage,從這開始的操作(包括當(dāng)前操作)便都運行在system_server系統(tǒng)進程。

1.8 小節(jié)

進程絕殺技force-stop,并非任意app可直接調(diào)用, 否則App間可以相互停止對方,則豈非天下大亂。該方法的存在便是供系統(tǒng)差遣。一般地,點擊home彈出的清理用戶最近使用app采取的策略便是force-stop.

至于force-stop的觸發(fā)方式,除了adb的方式,還可通過獲取ActivityManager再調(diào)用其方法forceStopPackage(),不過這是@hide隱藏方法,同樣是需要具有FORCE_STOP_PACKAGES權(quán)限。雖然第三方普通app不能直接調(diào)用,但對于深入理解Android,還是很有必要知道系統(tǒng)是如何徹底清理進程的過程。接下來,進入AMS來深入探查force-stop的內(nèi)部機理。

二. force-stop內(nèi)部機理

2.1 AMS.forceStopPackage

[-> ActivityManagerService.java]

這里有一個過程非常重要,那就是setPackageStoppedState()將包的狀態(tài)設(shè)置為stopped,那么所有廣播都無法接收,除非帶有標(biāo)記FLAG_INCLUDE_STOPPED_PACKAGES的廣播,系統(tǒng)默認(rèn)的廣播幾乎都是不帶有該標(biāo)志,也就意味著被force-stop的應(yīng)用是無法通過建立手機網(wǎng)絡(luò)狀態(tài)或者亮滅的廣播來拉起進程。

當(dāng)使用force stop方式來結(jié)束進程時, reason一般都是”from pid “ + callingPid. 當(dāng)然也有另外,那就是AMS.clearApplicationUserData方法調(diào)用forceStopPackageLocked的reason為”clear data”.

2.2 AMS.forceStopPackageLocked

清理跟該包名相關(guān)的進程和四大組件之外,還會發(fā)送廣播ACTION_PACKAGE_RESTARTED,用于清理已注冊的alarm,notification信息。

2.3 AMS.forceStopPackageLocked

對于didSomething只指當(dāng)方法中所有行為,則返回true.比如killPackageProcessesLocked(),只要殺過一個進程則代表didSomething為true.

該方法的主要功能:

Process: 調(diào)用AMS.killPackageProcessesLocked()清理該package所涉及的進程;

Activity: 調(diào)用ASS.finishDisabledPackageActivitiesLocked()清理該package所涉及的Activity;

Service: 調(diào)用AS.bringDownDisabledPackageServicesLocked()清理該package所涉及的Service;

Provider: 調(diào)用AMS.removeDyingProviderLocked()清理該package所涉及的Provider;

BroadcastRecevier: 調(diào)用BQ.cleanupDisabledPackageReceiversLocked()清理該package所涉及的廣播

接下來,從這5個角度來分別說說force-stop的執(zhí)行過程.

三. Process

3.1 AMS.killPackageProcessesLocked

一般地force-stop會指定包名,該方法會遍歷當(dāng)前所有運行中的進程mProcessNames,以下條件同時都不滿足的進程,則會成為被殺的目標(biāo)進程:(也就是說滿足以下任一條件都可以免死)

persistent進程:

進程setAdj < minOomAdj(默認(rèn)為-100):

非UserHandle.USER_ALL同時, 且進程的userId不相等:多用戶模型下,不同用戶下不能相互殺;

進程沒有依賴該packageName, 且進程的AppId不相等;

進程沒有依賴該packageName, 且該packageName沒有運行在該進程.

通俗地來說就是:

forceStop不殺系統(tǒng)persistent進程;

當(dāng)指定用戶userId時,不殺其他用戶空間的進程;

除此之外,以下情況則必然會成為被殺進程:

進程已標(biāo)記remove=true的進程,則會被殺;

進程的pkgDeps中包含該packageName,則會被殺;

進程的pkgList中包含該packageName,且該進程與包名所指定的AppId相等則會被殺;

進程的pkgList是在啟動組件或者創(chuàng)建進程的過程向該隊列添加的,代表的是該應(yīng)用下有組件運行在該進程。那么pkgDeps是指該進程所依賴的包名,調(diào)用ClassLoader的過程添加。

3.2 AMS.removeProcessLocked

該方法的主要功能:

從mProcessNames, mPidsSelfLocked隊列移除該進程;

移除進程啟動超時的消息PROC_START_TIMEOUT_MSG;

調(diào)用app.kill()來殺進程會同時調(diào)用Process.kill和Process.killProcessGroup, 該過程詳見理解殺進程的實現(xiàn)原理

調(diào)用handleAppDiedLocked()來清理進程相關(guān)的信息, 該過程詳見binderDied()過程分析

四. Activity

4.1 ASS.finishDisabledPackageActivitiesLocked

[-> ActivityStackSupervisor.java]

4.2 AS.finishDisabledPackageActivitiesLocked

[-> ActivityStack.java]

4.3 AS.finishActivityLocked

[-> ActivityStack.java]

4.3.1 AR.makeFinishingLocked

[-> ActivityRecord.java]

4.3.2 ASS.requestVisibleBehindLocked

4.3.3 TaskRecord.setFrontOfTask

[-> TaskRecord.java]

將該Task中從底部往上查詢, ***個處于非finishing狀態(tài)的ActivityRecord,則設(shè)置為根Activity(即r.frontOfTask = true),其他都為false;

當(dāng)所有的activity都處于finishing狀態(tài),則把***部的activity設(shè)置成跟Activity.

4.3.4 AS.adjustFocusedActivityLocked

[-> ActivityStack.java]

4.3.***S.finishCurrentActivityLocked

 

滿足下面其中之一的條件,則會執(zhí)行finish以及destroy Activity.

模式為FINISH_IMMEDIATELY

模式為FINISH_AFTER_PAUSE, 且Activity狀態(tài)已處于PAUSED;

Activity的狀態(tài)為STOPPED或INITIALIZING.

4.3.6 AS.destroyActivityLocked

五. Service

5.1 bringDownDisabledPackageServicesLocked

[-> ActiveServices.java]

5.2 collectPackageServicesLocked

[-> ActiveServices.java]

該方法的主要功能就是收集該滿足條件service放入mTmpCollectionResults.

5.3 bringDownServiceLocked

[-> ActiveServices.java]

5.4 unscheduleServiceRestartLocked

六. Provider

6.1 PM.collectPackageProvidersLocked

[-> ProviderMap.java]

當(dāng)userId = UserHandle.USER_ALL時, 則會mSingletonByClass和mProvidersByClassPerUser結(jié)構(gòu)中查詢所有屬于該package的providers.

當(dāng)userId = UserHandle.USER_OWNER時,則會從mSingletonByClass和mProvidersByClassPerUser中userId相等的 數(shù)據(jù)結(jié)構(gòu)中查詢所有屬于該package的providers.

當(dāng)userId不屬于上述兩者之一時,則會從mProvidersByClassPerUser中userId相等的查詢所有屬于該package的providers.

6.2 PM.collectPackageProvidersLocked

[-> ProviderMap.java]

6.3 AMS.removeDyingProviderLocked

當(dāng)其他app使用該provider, 且建立stable的連接, 那么對于非persistent進程,則會由于依賴該provider的緣故而被殺.

七. Broadcast

7.1 BQ.cleanupDisabledPackageReceiversLocked

[-> BroadcastQueue.java]

該方法主要功能:

清理并行廣播隊列mParallelBroadcasts;

清理有序廣播隊列mOrderedBroadcasts

7.2 BR.cleanupDisabledPackageReceiversLocked

[-> BroadcastRecord.java]

八. Alarm和Notification

在前面[小節(jié)2.2]介紹到處理完forceStopPackageLocked(),緊接著便是發(fā)送廣播ACTION_PACKAGE_RESTARTED,經(jīng)過Broadcast廣播分發(fā),最終調(diào)用到注冊過該廣播的接收者。

8.1 Alarm清理

[-> AlarmManagerService.java]

調(diào)用AlarmManagerService中的removeLocked()方法,從mAlarmBatches和mPendingWhileIdleAlarms隊列中移除包所相關(guān)的alarm.

8.2 Notification清理

[-> NotificationManagerService.java]

mNotificationList隊列中移除包所相關(guān)的Notification.

九. 級聯(lián)誅殺

這里就跟大家分享一段經(jīng)歷吧,記得之前有BAT的某瀏覽器大廠(具體名稱就匿了),瀏覽器會因為另一個app被殺而導(dǎo)致自己無辜被牽連所殺,并懷疑是ROM定制化導(dǎo)致的bug,于是發(fā)郵件向我廠請教緣由。

遇到這個問題,首先將兩個app安裝到Google原生系統(tǒng),結(jié)果是依然會被級聯(lián)誅殺,很顯然可以排除廠商ROM定制的緣故,按常理說bug應(yīng)該可以讓app自行解決。出于好奇,幫他們進一步調(diào)查了下這個問題,發(fā)現(xiàn)并非無辜被殺,而是force-stop的級聯(lián)誅殺所導(dǎo)致的。

簡單來說就是App1調(diào)用了getClassLoader()來加載App2,那么App1所運行的進程便會在其pkgDeps隊列中增加App2的包名,在前面[小節(jié)3.2]已經(jīng)提到pkgDeps,殺進程的過程中會遍歷該隊列,當(dāng)App2被forceStop所殺時,便是級聯(lián)誅殺App1。App1既然會調(diào)用App2的ClassLoader來加載其方法,那么就建立了一定的聯(lián)系,這是Google有意賦予forceStop這個強力殺的功能。

這個故事是想告訴大家在插件化或者反射的過程中要注意這種情況,防止不必要的誤傷。接下來具體說說這個過程是如何建立依賴的。

9.1 CI.getClassLoader

[-> ContextImpl.java]

9.2 LA.getClassLoader

[-> LoadedApk.java]

9.3 AMS.addPackageDependency

調(diào)用ClassLoader來加載啟動包名時,則會將該包名加入到進程的pkgDeps。

十. 總結(jié)

forceStop的功能如下:


 

 

Process: 調(diào)用AMS.killPackageProcessesLocked()清理該package所涉及的進程;

Activity: 調(diào)用ASS.finishDisabledPackageActivitiesLocked()清理該package所涉及的Activity;

Service: 調(diào)用AS.bringDownDisabledPackageServicesLocked()清理該package所涉及的Service;

Provider: 調(diào)用AMS.removeDyingProviderLocked()清理該package所涉及的Provider;

BroadcastRecevier: 調(diào)用BQ.cleanupDisabledPackageReceiversLocked()清理該package所涉及的廣播

發(fā)送廣播ACTION_PACKAGE_RESTARTED,用于停止已注冊的alarm,notification.

功能點歸納:

force-stop并不會殺persistent進程;

當(dāng)app被force-stop后,無法接收到任何普通廣播,那么也就常見的監(jiān)聽手機網(wǎng)絡(luò)狀態(tài)的變化或者屏幕亮滅的廣播來拉起進程肯定是不可行;

當(dāng)app被force-stop后,那么alarm鬧鐘一并被清理,無法實現(xiàn)定時響起的功能;

app被force-stop后,四大組件以及相關(guān)進程都被一一剪除清理,即便多進程架構(gòu)的app也無法拉起自己;

級聯(lián)誅殺:當(dāng)app通過ClassLoader加載另一個app,則會在force-stop的過程中會被級聯(lián)誅殺;

生死與共:當(dāng)app與另個app使用了share uid,則會在force-stop的過程,任意一方被殺則另一方也被殺,建立起生死與共的強關(guān)系。

既然force-stop多次提到殺進程,那***簡單說兩句關(guān)于保活:正確的保活姿態(tài),應(yīng)該是在用戶需要時保證千萬別被殺,用戶不需要時別強保活,一切以用戶為出發(fā)點。

進程是否需要存活,系統(tǒng)上層有AMS來管理緩存進程和空進程,底層有LowMemoryKiller來根據(jù)系統(tǒng)可用內(nèi)存的情況來管理進程是否存活,這樣的策略是從系統(tǒng)整體性角度考慮,為了是給用戶提供更好更流暢的用戶體驗。

用戶需要的時候千萬別被殺:謹(jǐn)慎使用插件化和共享uid,除非愿意接受級聯(lián)誅殺和生死與共的場景;還有就是提高自身app的穩(wěn)定性,減少crash和anr的發(fā)生頻率,這才是正道。

用戶不需要的時候別強保活:為了保活,多進程架構(gòu),利用各種小技巧來提升優(yōu)先級等都是不可取的,一招force-stop足以干掉90%以上的保活策略,當(dāng)然還有一些其他手段及漏洞來保活,系統(tǒng)層面往往還會采取一些特別的方法來禁止保活。博主曾經(jīng)干過手機底層的性能與功耗優(yōu)化工作,深知不少app的流氓行徑,嚴(yán)重系統(tǒng)的流暢度與手機續(xù)航能力。

為了Android有更好的用戶體驗,為了不影響手機系統(tǒng)性能,為了不降低手機續(xù)航能力,建議大家花更多時間精力在如何提高app的穩(wěn)健性,如何優(yōu)化app性能,共同打造Android的良好生態(tài)圈。

【本文是51CTO專欄“小米開放平臺”原創(chuàng)文章,“小米開放平臺”微信公眾號xiaomideveloper】

 

責(zé)任編輯:武曉燕 來源: 小米開放平臺
相關(guān)推薦

2012-06-07 15:51:40

HTML5

2023-05-25 21:32:54

AI蘋果ChatGPT

2017-03-13 15:39:09

Windows 10進程必殺技

2023-09-26 07:49:11

AOP代理spring

2017-11-10 12:55:30

分析流量銷量

2024-05-23 08:24:11

Android進程開發(fā)

2016-10-28 21:30:00

AndroidJava進程

2017-01-10 13:12:00

互聯(lián)網(wǎng)游戲

2010-02-06 10:26:55

Android進程

2019-11-21 16:52:48

人工智能宇宙電腦

2016-10-10 16:27:23

247 科技

2011-12-02 13:19:59

AndroidiPhone

2010-02-06 10:54:38

Android進程

2014-12-11 16:40:31

Android|進程線程

2012-06-19 15:12:36

歐洲杯iPhone戴爾

2018-11-07 17:00:06

2018-11-16 13:09:39

以色列創(chuàng)新信息

2016-04-01 09:32:52

2009-04-30 09:02:53

AcerAndroid開發(fā)

2011-02-05 08:54:04

Android
點贊
收藏

51CTO技術(shù)棧公眾號

手机精品视频在线| 日韩福利视频| 国产无套粉嫩白浆内谢| 午夜精品影视国产一区在线麻豆| 欧美性20hd另类| 先锋影音欧美| 熟妇人妻av无码一区二区三区| 美女精品在线观看| 欧美成人第一页| 人妻少妇一区二区| 日韩视频1区| 色狠狠av一区二区三区| 欧美日韩中文字幕在线播放| 青青草娱乐在线| 狠狠色2019综合网| 日韩免费在线观看视频| 中文字幕电影av| 免费一区二区三区视频导航| 日韩情涩欧美日韩视频| 37pao成人国产永久免费视频| 日本视频不卡| 欧美激情在线一区二区三区| 国产一区二区中文字幕免费看| 久草热在线观看| 99精品视频免费| 欧美成人精品激情在线观看| 摸摸摸bbb毛毛毛片| 美女主播精品视频一二三四| 欧美一区二区三区四区五区| 青青青在线视频免费观看| a毛片不卡免费看片| 亚洲色图制服诱惑| 日韩av高清| 水莓100在线视频| 成人听书哪个软件好| 成人在线中文字幕| 中文字幕 欧美激情| 亚洲一区图片| 97av在线视频| 日本系列第一页| 欧美精品首页| 欧美精品制服第一页| 国产男女猛烈无遮挡在线喷水| 蜜乳av综合| 亚洲国产欧美一区二区三区同亚洲| 五月六月丁香婷婷| 国产一区二区在线观| 在线播放国产精品二区一二区四区| 中文字幕第80页| 欧美日韩亚洲国产| 在线观看三级视频欧美| 丁香啪啪综合成人亚洲| 欧美极品videos大乳护士| 亚洲高清视频在线| 2018中文字幕第一页| 色婷婷在线播放| 一区二区三区91| 日韩a级黄色片| 国产www视频在线观看| 一个色妞综合视频在线观看| 激情五月六月婷婷| 丁香花在线高清完整版视频| 亚洲最大成人网4388xx| 亚洲色成人www永久在线观看| 少女频道在线观看高清| 一区二区国产视频| 成人午夜精品久久久久久久蜜臀| aaa在线播放视频| 欧美午夜女人视频在线| 白嫩少妇丰满一区二区| 成人看片网站| 欧美日韩国产区一| 天天色天天干天天色| 亚洲不卡在线| 日韩国产精品视频| 黄色片在线观看免费| 国产精品久久久久9999赢消| 欧美成aaa人片在线观看蜜臀| 青娱乐国产在线视频| 亚洲少妇一区| 国产精品久久久久免费a∨大胸| 中文字幕黄色av| 国产乱码精品一区二区三| 国产精品加勒比| 免费在线观看一级毛片| 最新国产の精品合集bt伙计| 国产91沈先生在线播放| 自拍偷拍欧美视频| 欧美蜜桃一区二区三区| 波多野结衣电影免费观看| 丝袜美腿一区二区三区动态图| 亚洲人成绝费网站色www| 国产乱子轮xxx农村| 在线观看不卡| 国产精品久久久久久搜索| 精品人妻无码一区二区色欲产成人 | 国产精品传媒在线观看| 国产又粗又猛又爽又黄91精品| 国产九色91| 中文字幕日本在线观看| 亚洲一区二区欧美日韩 | 国产精品第72页| 天堂影院一区二区| 成人午夜电影在线播放| 搞黄视频免费在线观看| 亚洲一区二区三区爽爽爽爽爽| 国产成人亚洲精品无码h在线| 电影一区二区三区久久免费观看| 国产婷婷97碰碰久久人人蜜臀 | 国产在线观看一区二区三区 | 欧美高清在线精品一区| 人妻互换免费中文字幕| 欧美综合社区国产| 精品视频—区二区三区免费| 在线免费观看亚洲视频| 水野朝阳av一区二区三区| 2022国产精品| www.亚洲.com| 欧美日韩在线免费| av电影在线播放| 久久久久久久久国产一区| 日本伊人精品一区二区三区介绍| 亚洲国产精彩视频| 亚洲欧美aⅴ...| 亚洲综合婷婷久久| 国产剧情在线观看一区| 亚州av一区二区| 性网爆门事件集合av| 亚洲欧洲成人精品av97| 亚洲 欧美 日韩系列| 无码少妇一区二区三区| 午夜精品蜜臀一区二区三区免费| 99久久久久成人国产免费| 中文久久乱码一区二区| 手机看片福利日韩| 岳的好大精品一区二区三区| 97免费视频在线播放| 亚洲国产精品18久久久久久| 亚洲综合丁香婷婷六月香| 亚洲自拍第三页| 亚洲成人精品| 91免费的视频在线播放| 日本在线视频网| 欧美日韩高清一区二区不卡 | 少妇性bbb搡bbb爽爽爽欧美| 亚洲1区2区3区视频| 少妇熟女视频一区二区三区| 一区二区中文| 999日本视频| 日本乱理伦在线| 日韩美女视频一区二区在线观看| 99鲁鲁精品一区二区三区| 韩国精品一区二区| 黄色网络在线观看| 久久天堂久久| 欧美激情亚洲视频| 色窝窝无码一区二区三区成人网站| 一区二区三区四区不卡视频| av在线天堂网| 亚洲精品麻豆| 免费久久久一本精品久久区| 中文在线а√天堂| 亚洲午夜女主播在线直播| 国产美女www| 亚洲天堂成人在线观看| 熟妇女人妻丰满少妇中文字幕| 国产精品av久久久久久麻豆网| 国语精品免费视频| 成人国产二区| 中文字幕免费精品一区高清| 一区二区三区日| 亚洲综合丁香婷婷六月香| 特级西西人体wwwww| 日韩福利电影在线| 色乱码一区二区三区熟女 | 欧美激情一区二区三区在线视频 | 日韩一区二区三区av| 久久久全国免费视频| 91亚洲精品乱码久久久久久蜜桃 | 毛片毛片女人毛片毛片| 国产目拍亚洲精品99久久精品| 91亚洲精品久久久蜜桃借种| 国产在线不卡| 日韩av电影免费观看| 国产精品xnxxcom| 4438全国成人免费| 日本福利在线| 亚洲国产精品成人va在线观看| 91麻豆精品在线| 一区二区三区蜜桃网| 国产精成人品免费观看| 国产精品77777| 欧美黄色一级片视频| 一区二区三区中文| 日本视频一区二区在线观看| 欧美午夜在线播放| 日韩av观看网址| 日本在线观看高清完整版| 亚洲丝袜在线视频| 丰满少妇一级片| 欧美在线免费观看视频| 国产 日韩 欧美 成人| 亚洲国产精品激情在线观看| 欧美xxxxx少妇| 久热成人在线视频| av动漫免费看| 亚洲欧美文学| 日韩精品不卡| 午夜精品影视国产一区在线麻豆| 亚洲va电影大全| 高清av一区二区三区| 97精品一区二区视频在线观看| 黄色网在线免费看| 国产一区二区三区视频| 天天干天天色天天| 日韩亚洲欧美中文三级| 91激情在线观看| 色94色欧美sute亚洲线路一久 | 国内不卡一区二区三区| 成人污污视频| 国产精品自拍偷拍视频| 欧美大片1688| 26uuu亚洲伊人春色| 国产高清在线a视频大全| 久久艹在线视频| 日韩在线免费电影| 亚洲夜晚福利在线观看| 欧美成人综合在线| 亚洲精品xxx| 五月天婷婷社区| 精品国一区二区三区| 精品人妻一区二区三区四区不卡| 欧美日韩亚洲综合在线| 欧美国产一级片| 色欧美乱欧美15图片| 99热在线观看免费精品| 午夜av一区二区| 伊人久久综合视频| 亚洲v日本v欧美v久久精品| 久久久精品国产sm调教| 亚洲欧美一区二区三区久本道91| 人与动物性xxxx| 中文字幕一区二区在线观看| 久久久久人妻一区精品色| 亚洲国产激情av| 成年人在线免费看片| 亚洲国产精品成人综合色在线婷婷 | 欧美激情网友自拍| 91禁在线看| 2019中文字幕免费视频| 国内精彩免费自拍视频在线观看网址 | 乱一区二区av| 国产成人在线综合| 国产综合色视频| 无套白嫩进入乌克兰美女| 国产精品一区二区男女羞羞无遮挡| 爱情岛论坛亚洲自拍| 国产福利不卡视频| 在线视频 日韩| 94色蜜桃网一区二区三区| 久久国产柳州莫菁门| 国产精品欧美久久久久无广告 | 午夜精品偷拍| 91传媒免费视频| 一道本一区二区| 精品www久久久久奶水| 日韩电影在线免费看| 亚洲国产高清av| 福利一区福利二区| 800av在线播放| 日本一区二区三区高清不卡| 女教师淫辱の教室蜜臀av软件| 亚洲欧美日韩系列| 久久精品久久国产| 91久久精品一区二区二区| 中文字幕视频二区| 精品三级在线看| 国产人成在线视频| 另类天堂视频在线观看| 91桃色在线| 国产精品国语对白| 日韩一区二区三区精品| 奇米视频888战线精品播放| 久久一区二区中文字幕| 欧美极品欧美精品欧美| 日本伊人精品一区二区三区观看方式| www.se五月| eeuss国产一区二区三区| 天天干天天操天天拍| 依依成人综合视频| 欧美国产一级片| 精品国产乱码久久久久久1区2区| 猫咪在线永久网站| 美女性感视频久久久| 亚洲欧美小说色综合小说一区| 国产精品综合网站| 欧美自拍一区| 免费国产成人看片在线| 久久久国产精品一区二区中文| 成人亚洲免费视频| 久久这里都是精品| 欧美成人综合色| 精品视频在线看| 天天综合永久入口| 欧美日韩aaaa| 男人天堂久久| 美国av一区二区三区| 欧美日本中文| 亚洲天堂av一区二区| 99热99精品| 欧美成人手机视频| 欧美日韩高清在线| 久久99久久| 69av视频在线播放| 国产精品chinese在线观看| 中文字幕在线亚洲精品| 视频一区国产视频| 五月婷婷综合在线观看| 亚洲永久免费av| 国产色综合视频| 日韩中文字幕免费| 欧美精品资源| 日本一区二区三区免费观看| 99精品福利视频| 又黄又色的网站| 一区二区在线看| 99久久婷婷国产一区二区三区| 国产一区二区精品丝袜| 免费福利视频一区二区三区| 精品一区二区久久久久久久网站| 欧美日本不卡| 无码国产精品一区二区高潮| 亚洲色图都市小说| 国产又粗又黄视频| 精品国产视频在线| 精品自拍视频| 亚洲精品8mav| 久久精品国产久精国产| 久久午夜精品视频| 欧美日韩一区三区四区| 国产福利在线看| 国产精品人成电影| 欧美中文一区二区| 亚洲精品久久久中文字幕| 中文字幕乱码一区二区免费| 丰满熟女人妻一区二区三| 一本色道久久综合狠狠躁篇怎么玩| 欧美极度另类| 日韩视频专区| 久久成人免费网| 国产一区二区三区在线视频观看| 欧美一区二区三级| 国产99re66在线视频| 成人在线看片| 国产情侣久久| 亚洲精品一区二区三区影院忠贞| 91久久精品一区二区三区| 成人免费在线观看| 91九色综合久久| 黄色综合网站| 野外性满足hd| 欧美色精品天天在线观看视频| а天堂8中文最新版在线官网| 国产精品无av码在线观看| 一区二区免费不卡在线| zjzjzjzjzj亚洲女人| 懂色av中文一区二区三区天美| 国外av在线| 91久久精品一区| 亚洲福利专区| a天堂中文字幕| 欧美日本高清视频在线观看| 性欧美videoshd高清| 麻豆91蜜桃| 精品亚洲国产成人av制服丝袜 | 好吊日视频在线观看| 成人动漫视频在线观看免费| 99国产精品私拍| 992在线观看| 亚洲国产精彩中文乱码av| 香蕉成人影院| 少妇大叫太大太粗太爽了a片小说| av一区二区三区| 中文字幕在线观看你懂的| 欧美成人午夜激情视频| 伊人成综合网yiren22| 国产农村妇女精品久久| 午夜精品福利一区二区三区av| av中文资源在线| 国产成人精品一区二区三区福利| 视频一区免费在线观看| 久久久一区二区三区四区| 亚洲欧美一区二区三区在线| 秋霞午夜一区二区三区视频| 黄色a级片免费| 一区二区三区四区乱视频| 黄色片在线免费看| 成人蜜桃视频| 久久99精品视频| 日韩在线视频不卡|