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

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

Android Fragment生命周期深入探究

瀏覽:14日期:2022-09-27 15:49:43

Fragment是Android中的重要組件,在Android 3.0的時候添加進來。

關于Fragment的生命周期,我相信了解過的開發人員都應該把以下方法脫口而出:onAttach, onCreate, onCreateView, onViewCreated, onActivityCreated, onStart, onResume, onPause, onStop, onDestroyView, onDestroy, onDetach.

當Fragment以靜態的方式,即通過在布局文件中以其它控件的方式設置時,它的生命周期隨所在Activity的生命周期而發生變化。此時其生命周期的方法調用過程是這樣的:

1,當首次展示布局頁面時,其生命周期方法調用的順序是:

Android Fragment生命周期深入探究

2,而當關閉手機屏幕或者手機屏幕變暗時,其其生命周期方法調用的順序是:

Android Fragment生命周期深入探究

3,當再次對手機屏幕解鎖或者手機屏幕變亮時,其生命周期方法調用的順序是:

Android Fragment生命周期深入探究

4,而當對當前Fragment所在屏幕按返回鍵時,其生命周期方法調用的順序是:

1 01-13 17:08:46.959 3102-3102/com.yeepay.fraglifecircletest I/FragA﹕ onPause2 01-13 17:08:46.959 3102-3102/com.yeepay.fraglifecircletest I/FragA﹕ onStop3 01-13 17:08:46.959 3102-3102/com.yeepay.fraglifecircletest I/FragA﹕ onDestroyView4 01-13 17:08:46.959 3102-3102/com.yeepay.fraglifecircletest I/FragA﹕ onDestroy5 01-13 17:08:46.959 3102-3102/com.yeepay.fraglifecircletest I/FragA﹕ onDetach

但是當使用FragmentManager動態的管理Fragment并且涉及到是否addToBackStack時,其生命周期的展現就略微顯得有些復雜了。但是還沒有復雜到無法理解。

好,下面,我們就探究一下這些問題。

首先,我們重寫了兩個Fragment,主要是重寫了它們的生命周期方法,通過在其生命周期方法中打印出Log的方式來顯示其方法的調用。

兩個類分別是:

package com.yeepay.fraglifecircletest.frag;import android.app.Activity;import android.app.Fragment;import android.os.Bundle;import android.util.Log;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import com.yeepay.fraglifecircletest.R;public class FragA extends Fragment { private static final String TAG = FragA.class.getSimpleName(); @Override public void onAttach(Activity activity) {super.onAttach(activity);Log.i(TAG, 'onAttach'); } @Override public void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);Log.i(TAG, 'onCreate'); } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {Log.i(TAG, 'onCreateView');return inflater.inflate(R.layout.fragment_test_a, null, false); } @Override public void onViewCreated(View view, Bundle savedInstanceState) {Log.i(TAG, 'onViewCreated');super.onViewCreated(view, savedInstanceState); } @Override public void onDestroy() {Log.i(TAG, 'onDestroy');super.onDestroy(); } @Override public void onDetach() {Log.i(TAG, 'onDetach');super.onDetach(); } @Override public void onDestroyView() {Log.i(TAG, 'onDestroyView');super.onDestroyView(); } @Override public void onStart() {Log.i(TAG, 'onStart');super.onStart(); } @Override public void onStop() {Log.i(TAG, 'onStop');super.onStop(); } @Override public void onResume() {Log.i(TAG, 'onResume');super.onResume(); } @Override public void onPause() {Log.i(TAG, 'onPause');super.onPause(); } @Override public void onActivityCreated(Bundle savedInstanceState) {Log.i(TAG, 'onActivityCreated');super.onActivityCreated(savedInstanceState); }}FragA.java

package com.yeepay.fraglifecircletest.frag;import android.app.Activity;import android.app.Fragment;import android.os.Bundle;import android.util.Log;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import com.yeepay.fraglifecircletest.R;public class FragB extends Fragment { private static final String TAG = FragB.class.getSimpleName(); @Override public void onAttach(Activity activity) {super.onAttach(activity);Log.i(TAG, 'onAttach'); } @Override public void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);Log.i(TAG, 'onCreate'); } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {Log.i(TAG, 'onCreateView');return inflater.inflate(R.layout.fragment_test_b, null, false); } @Override public void onViewCreated(View view, Bundle savedInstanceState) {Log.i(TAG, 'onViewCreated');super.onViewCreated(view, savedInstanceState); } @Override public void onDestroy() {Log.i(TAG, 'onDestroy');super.onDestroy(); } @Override public void onDetach() {Log.i(TAG, 'onDetach');super.onDetach(); } @Override public void onDestroyView() {Log.i(TAG, 'onDestroyView');super.onDestroyView(); } @Override public void onStart() {Log.i(TAG, 'onStart');super.onStart(); } @Override public void onStop() {Log.i(TAG, 'onStop');super.onStop(); } @Override public void onResume() {Log.i(TAG, 'onResume');super.onResume(); } @Override public void onPause() {Log.i(TAG, 'onPause');super.onPause(); } @Override public void onActivityCreated(Bundle savedInstanceState) {Log.i(TAG, 'onActivityCreated');super.onActivityCreated(savedInstanceState); }}FragB.java

1,當我們通過以下方式添加FragA時,

1 FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();2 fragA = new FragA();3 fragmentTransaction.replace(R.id.frag_container, fragA, fragNames[0]);4 fragmentTransaction.commit();

它的生命周期展示方式是同在布局文件中靜態設置的表現一模一樣的,這里不再詳細展開,大家可以查看一下以上內容。

2,當我們以如下方式展示FragA并且沒有addToBackStack時,

@Override public void onClick(View v) {FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();switch (v.getId()) { case R.id.button1:if (fragA == null) { fragA = new FragA(); fragmentTransaction.replace(R.id.frag_container, fragA, fragNames[0]);// fragmentTransaction.addToBackStack(fragNames[0]);} else { Fragment fragment = fragmentManager.findFragmentByTag(fragNames[0]); fragmentTransaction.replace(R.id.frag_container, fragment, fragNames[0]);}break; case R.id.button2:if (fragB == null) { fragB = new FragB(); fragmentTransaction.replace(R.id.frag_container, fragB, fragNames[1]);// fragmentTransaction.addToBackStack(fragNames[1]);} else { Fragment fragment = fragmentManager.findFragmentByTag(fragNames[1]); fragmentTransaction.replace(R.id.frag_container, fragment, fragNames[1]);}break; default:break;}fragmentTransaction.commit(); }

FragA生命周期調用順序是:

Android Fragment生命周期深入探究

此時,如果再點擊另外一個按鈕B,將FragB展示出來,FragA和FragB的生命周期展示方式是:

Android Fragment生命周期深入探究

可以看到,FragA調用順序為onPause, onStop, onDestroyView, onDestroy, onDetach.這說明,FragA已經被FragmentManager完全拋棄了,取而代之的是FragB的完全展現。而如果此時按返回鍵的話,FragB的生命周期也將是onPause, onStop, onDestroyView, onDestroy, onDetach。這說明,在添加Fragment時如果沒有調用addToBackStack方式的話,當FragmentManager更換Fragment時,是不保存Fragment的狀態的。

3,下面我們在替換Fragment時順便addToBackStack,則其生命周期展現方式是:

replace FragA and addToBackStack########################################################################################01-13 17:08:43.359 3102-3102/com.yeepay.fraglifecircletest I/FragA﹕ onAttach01-13 17:08:43.359 3102-3102/com.yeepay.fraglifecircletest I/FragA﹕ onCreate01-13 17:08:43.359 3102-3102/com.yeepay.fraglifecircletest I/FragA﹕ onCreateView01-13 17:08:43.359 3102-3102/com.yeepay.fraglifecircletest I/FragA﹕ onViewCreated01-13 17:08:43.359 3102-3102/com.yeepay.fraglifecircletest I/FragA﹕ onActivityCreated01-13 17:08:43.359 3102-3102/com.yeepay.fraglifecircletest I/FragA﹕ onStart01-13 17:08:43.359 3102-3102/com.yeepay.fraglifecircletest I/FragA﹕ onResume

可以看得出來,此時的生命周期方法調用是跟沒有addToBackStack時沒有任何區別的。

然后通過點擊按鈕B,使用FragB來替換FragA,此時FragA和FragB的生命周期方法調用順序是:

and then replace FragB and addToBackStack&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&01-13 17:08:46.959 3102-3102/com.yeepay.fraglifecircletest I/FragA﹕ onPause01-13 17:08:46.959 3102-3102/com.yeepay.fraglifecircletest I/FragA﹕ onStop01-13 17:08:46.959 3102-3102/com.yeepay.fraglifecircletest I/FragA﹕ onDestroyView01-13 17:08:46.959 3102-3102/com.yeepay.fraglifecircletest I/FragB﹕ onAttach01-13 17:08:46.959 3102-3102/com.yeepay.fraglifecircletest I/FragB﹕ onCreate01-13 17:08:46.959 3102-3102/com.yeepay.fraglifecircletest I/FragB﹕ onCreateView01-13 17:08:46.959 3102-3102/com.yeepay.fraglifecircletest I/FragB﹕ onViewCreated01-13 17:08:46.959 3102-3102/com.yeepay.fraglifecircletest I/FragB﹕ onActivityCreated01-13 17:08:46.959 3102-3102/com.yeepay.fraglifecircletest I/FragB﹕ onStart01-13 17:08:46.959 3102-3102/com.yeepay.fraglifecircletest I/FragB﹕ onResume

由此可以看出,FragA生命周期方法只是調用到了onDestroyView,而onDestroy和onDetach則沒有被調用,這說明FragA的界面已經被銷毀了,但是FragmentManager并沒有完全銷毀FragA,FragA依然有狀態保存在FragmentManager里面。

然后再點擊按鈕A,使用FragA來替換當前顯示的FragB,此時FragA和FragB的生命周期方法調用順序為:

and then replace FragA again&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&01-13 17:08:51.869 3102-3102/com.yeepay.fraglifecircletest I/FragB﹕ onPause01-13 17:08:51.869 3102-3102/com.yeepay.fraglifecircletest I/FragB﹕ onStop01-13 17:08:51.869 3102-3102/com.yeepay.fraglifecircletest I/FragB﹕ onDestroyView01-13 17:08:51.869 3102-3102/com.yeepay.fraglifecircletest I/FragA﹕ onCreateView01-13 17:08:51.869 3102-3102/com.yeepay.fraglifecircletest I/FragA﹕ onViewCreated01-13 17:08:51.869 3102-3102/com.yeepay.fraglifecircletest I/FragA﹕ onActivityCreated01-13 17:08:51.869 3102-3102/com.yeepay.fraglifecircletest I/FragA﹕ onStart01-13 17:08:51.869 3102-3102/com.yeepay.fraglifecircletest I/FragA﹕ onResume

可以看到,FragB的生命方法調用順序是跟FragB替換FragA時FragA的調用順序一致的,作用就是只銷毀了視圖,但是依然保留了Fragment的狀態。而此時FragA的調用則值得注意,此時FragA直接從onCreateView調起,也就是說只是重新創建了視圖,而依然使用上次被替換時的Fragment狀態。

OK,說到此時,是否對Fragment的生命周期方法調用在是否addToBackStack時不同有所更加深入的了解了呢?

好吧,最后一個問題。是關于Fragment在FragmentManager管理時,show和hide時的生命周期方法調用。

此時的調用實現方式為:

FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();switch (v.getId()) { case R.id.button1:hideAllFrags(fragmentTransaction);if (fragA == null) { fragA = new FragA(); fragmentTransaction.add(R.id.frag_container, fragA, fragNames[0]); fragmentTransaction.addToBackStack(fragNames[0]);} else { fragmentTransaction.show(fragA);}break; case R.id.button2:hideAllFrags(fragmentTransaction);if (fragB == null) { fragB = new FragB(); fragmentTransaction.add(R.id.frag_container, fragB, fragNames[1]); fragmentTransaction.addToBackStack(fragNames[1]);} else { fragmentTransaction.show(fragB);}break; default:break;}fragmentTransaction.commit();

細心的話可以發現,在展示Fragment時,我們使用了方法add而非上面用的replace。而且直接addToBackStack。其實這也可以理解,你想,FragmentManager在show或者hide時,肯定是已經存在的,或者如果沒有的話,需要添加進來Fragment。這便是在show和hide時,需要注意的地方,即使用add和addToBackStack方法。

在點擊按鈕A時,FragA的調用順序為:

01-15 16:57:20.390 9225-9225/com.yeepay.fraglifecircletest I/hideAllFrags﹕ hideAllFrags01-15 16:57:20.390 9225-9225/com.yeepay.fraglifecircletest I/FragA﹕ onAttach01-15 16:57:20.390 9225-9225/com.yeepay.fraglifecircletest I/FragA﹕ onCreate01-15 16:57:20.390 9225-9225/com.yeepay.fraglifecircletest I/FragA﹕ onCreateView01-15 16:57:20.390 9225-9225/com.yeepay.fraglifecircletest I/FragA﹕ onViewCreated01-15 16:57:20.390 9225-9225/com.yeepay.fraglifecircletest I/FragA﹕ onActivityCreated01-15 16:57:20.390 9225-9225/com.yeepay.fraglifecircletest I/FragA﹕ onStart01-15 16:57:20.390 9225-9225/com.yeepay.fraglifecircletest I/FragA﹕ onResume

可以看出沒有什么不同于以上所言的部分。

然后,點擊按鈕B時,FragA和FragB的調用順序為:

01-15 16:57:23.360 9225-9225/com.yeepay.fraglifecircletest I/hideAllFrags﹕ hideAllFrags01-15 16:57:23.360 9225-9225/com.yeepay.fraglifecircletest I/FragB﹕ onAttach01-15 16:57:23.360 9225-9225/com.yeepay.fraglifecircletest I/FragB﹕ onCreate01-15 16:57:23.360 9225-9225/com.yeepay.fraglifecircletest I/FragB﹕ onCreateView01-15 16:57:23.370 9225-9225/com.yeepay.fraglifecircletest I/FragB﹕ onViewCreated01-15 16:57:23.370 9225-9225/com.yeepay.fraglifecircletest I/FragB﹕ onActivityCreated01-15 16:57:23.370 9225-9225/com.yeepay.fraglifecircletest I/FragB﹕ onStart01-15 16:57:23.370 9225-9225/com.yeepay.fraglifecircletest I/FragB﹕ onResume

可以看出,FragA并沒有調用生命周期方法,這說明是展示FragB時,FragA的生命周期并沒有發生變化。而FragB的生命周期與初次點擊按鈕A時FragA的生命周期方法相同。

然后再繼續點擊按鈕A和B,此時打印出來的log為:

1 01-15 16:57:25.220 9225-9225/com.yeepay.fraglifecircletest I/hideAllFrags﹕ hideAllFrags2 01-15 16:57:44.990 9225-9225/com.yeepay.fraglifecircletest I/hideAllFrags﹕ hideAllFrags3 01-15 16:57:47.350 9225-9225/com.yeepay.fraglifecircletest I/hideAllFrags﹕ hideAllFrags4 01-15 16:57:48.020 9225-9225/com.yeepay.fraglifecircletest I/hideAllFrags﹕ hideAllFrags

這說明在FragA和FragB添加進BackStack之后無論如何地show或者hide,它們的生命周期不再發生變化。

而當屏幕上鎖或變暗,然后再解鎖或者變亮時,FragA和FragB的生命周期方法調用順序為:

when screen is locked:###########################################################################################01-15 16:58:36.840 9225-9225/com.yeepay.fraglifecircletest I/FragA﹕ onPause01-15 16:58:36.840 9225-9225/com.yeepay.fraglifecircletest I/FragB﹕ onPause01-15 16:58:36.870 9225-9225/com.yeepay.fraglifecircletest I/FragA﹕ onStop01-15 16:58:36.880 9225-9225/com.yeepay.fraglifecircletest I/FragB﹕ onStopwhen screen is unlocked:##########################################################################################01-15 17:05:01.850 9225-9225/com.yeepay.fraglifecircletest I/FragA﹕ onStart01-15 17:05:01.850 9225-9225/com.yeepay.fraglifecircletest I/FragB﹕ onStart01-15 17:05:01.870 9225-9225/com.yeepay.fraglifecircletest I/FragA﹕ onResume01-15 17:05:01.870 9225-9225/com.yeepay.fraglifecircletest I/FragB﹕ onResume

可以看得出來,兩個Fragment都調用了onPause, onStop, onStart, onResume。而且FragA的調用要在FragB之前,這說明跟他們添加進BackStack的順序有關。

以上就是我對Fragment在被FragmentManager管理時,其生命周期方法調用順序的探究,大家覺得如果有什么地方不嚴謹或者不準確的地方,歡迎在留言處告知。示例工程下載地址為:FragLifeCircleTest

標簽: Android
相關文章:
主站蜘蛛池模板: 日本福利在线观看 | 亚洲男人av| 成人网久久 | 欧美日韩久久久 | 成人黄色短视频在线观看 | 91在线视频福利 | 欧美一性一交 | 粉嫩高清一区二区三区 | 久久中文字幕一区 | 国产无区一区二区三麻豆 | 久久精品这里只有精品 | 一级毛片在线播放 | 亚洲久草| 午夜小电影 | 一级黄色毛片 | 91精品久久久久久久99 | 精品无人乱码一区二区三区的优势 | 精品视频一区二区三区四区 | 欧美激情一区二区三区 | 欧美激情一区二区三区蜜桃视频 | 午夜视频在线观看网站 | 日本一区二区三区四区视频 | 国产精品一区二区三区在线播放 | 麻豆av在线播放 | 国产精品99久久免费观看 | 日韩精品在线播放 | 日韩在线精品视频 | 国产午夜久久 | 精品视频一区二区 | 亚洲一区二区在线视频 | 午夜精品一区二区三区在线 | 午夜不卡一区二区 | 国产亚洲一区二区三区 | 日韩在线观看视频一区二区三区 | 久久婷婷国产麻豆91天堂 | 精品视频在线观看一区二区 | 国产精品久久久久久久久免费 | 一区二区三区 在线 | 成人爽a毛片一区二区免费 美女高潮久久久 | 国产中文 | 爱草在线 | 亚洲欧洲自拍 | 国产精品黄网站在线观看 | 国产精品免费看 | 久久在线视频 | 亚洲乱码二区 | 精品中文字幕在线观看 | 天天久久 | 天堂中文字幕 | 在线观看免费国产 | 97人人超碰 | 亚洲成人精品一区 | а天堂中文最新一区二区三区 | 国产精品视频入口 | 欧美一区精品 | 免费看91| 成人免费视屏 | 久久成人一区二区 | 日韩成人在线视频 | 不卡一区二区三区四区 | 久久99精品视频 | 亚洲人在线 | 国产999精品久久久久久 | 亚洲 欧美 精品 | 欧美在线一区二区 | 亚洲视频中文字幕 | 国产精品久久久久久久午夜 | 日韩色av | 色999国产 | 女人夜夜春高潮爽a∨片传媒 | 男人天堂a| 亚洲天堂成人在线 | 精品一区二区三区免费 | 亚洲精品乱码久久久久膏 | 国产欧美日韩精品在线 | 国产精品一二 | 成人高清视频在线观看 | 在线观看免费av网 | 精品无码久久久久久国产 | 欧美激情国产日韩精品一区18 | 国产视频二 | 免费日韩成人 | 久久久久久99 | 午夜草民福利电影 | 国产一级特黄aaa大片评分 | 一区免费看 | 亚洲精品成人在线 | 桃色视频在线播放 | 欧美,日韩 | 成人午夜剧场 | 精品国产依人香蕉在线精品 | 一级特黄色大片 | 日本高清视频一区二区三区 | 樱桃小丸子在线观看 | 国产伦精品一区二区三区四区视频 | 日韩在线一区二区三区 | 午夜窝窝 | 国产日韩中文字幕 | 中文字幕国产 | 亚洲一区二区国产 | 国产不卡视频在线观看 | 欧美日韩不卡合集视频 | 欧美三级视频 | av解说在线精品 | 国产一区二区精品 | 日韩国产欧美一区 | 第四色影音先锋 | 红色av社区 | 天堂av2020 | 亚洲国产精品麻豆 | 日韩和的一区二区 | 成人无遮挡毛片免费看 | 国产精品一区二 | 国产精品美女久久久久aⅴ国产馆 | 欧美一级成人欧美性视频播放 | www.久久精品 | 成人免费在线视频 | 精品在线播放 | 国产美女中出 | 久久国产精品无码网站 | 亚洲毛片网站 | 午夜视频在线观看网站 | 97成人在线 | 久久高清片 | 国产精品自拍av | 5060毛片| 国产黄色大片 | 91亚洲国产亚洲国产 | 日韩免费在线视频 | 欧美日韩久久久 | 国内精品成人 | 国产一区二区视频免费看 | 在线欧美亚洲 | 一区二区三区在线免费播放 | 中文字幕av一区 | 色婷婷一区二区三区四区 | 亚洲精品国产乱码在线看蜜月 | 欧美二三区 | 91精品视频在线播放 | 亚洲高清免费视频 | 国产欧美一二三区在线粉嫩 | 久久精品久久久久电影 | 大黑人交xxx极品hd | 久久香蕉国产视频 | 国产成人在线免费观看 | 日韩中文字幕一区二区 | 欧美日韩国产一区二区三区在线观看 | 日本a视频| 久久亚洲一区二区三 | 日韩精品一区二区三区在线观看 | 日韩一二三区视频 | 国产超碰在线 | 中文字幕在线观看1 | 一区在线免费 | 日韩视频在线观看 | 日本在线视频观看 | 久久久99精品免费观看 | 国产精品69毛片高清亚洲 | 亚洲毛片在线观看 | 久久成人精品 | 亚洲国产成人精品女人久久久 | 中国大陆高清aⅴ毛片 | 亚洲一区二区三区在线视频 | 久久久久久九九九九九九 | 久久人体 | 91麻豆视频 | 日韩性欧美 | 蜜臀在线视频 | 亚洲欧美日韩精品 | 亚洲综合无码一区二区 | www国产成人免费观看视频 | 日韩在线观看一区二区 | 国产精品久久久久久久久久久久久 | 日韩在线视频播放 | 亚洲大片免费观看 | 亚洲国产精品久久久久 | 欧美视频一区二区三区在线观看 | 日韩一区二 | 伊人网91| 日韩欧美中文字幕在线视频 | 一级黄色影片在线观看 | 国产在线精品一区二区三区 | 国产精品亚洲第一区在线暖暖韩国 | 婷婷成人免费视频 | 欧美激情视频一区二区三区在线播放 | 国产区第一页 | 国产成人精品免高潮在线观看 | 日韩草比 | 亚洲精品一二三 | 亚洲综合影院 | 亚洲一区二区三区四区五区中文 | 国产成人在线播放 | 国产在线一区二区三区 | 日韩精品免费视频 | 亚洲欧美国产一区二区 | 久久久久国产一区二区三区 | 久国久产久精永久网页 | 91精品久久久久久久久久 | 天天做天天看 | 最新的黄色网址 | 国产精品粉嫩白浆在线观看 | 日韩综合一区 | 在线成人av | 久久久久久久91 | 国产自在现线2019 | 99爱在线观看 | 中文字幕精品一区久久久久 | 亚洲人久久 | 国产va| 亚洲高清网 | 亚洲欧美中文日韩在线v日本 | 三级黄视频在线观看 | 91网站在线看 | 中文字幕亚洲一区 | 日本精品免费在线观看 | 日韩日韩日韩日韩日韩日韩 | 北条麻妃一区二区三区在线 | 奇米av| 在线欧美日韩 | 国产免费天天看高清影视在线 | 中文字幕亚洲精品 | 久久久久久免费毛片精品 | 婷婷五月色综合 | 久久久久久综合 | 天天看天天爽 | 国产福利一区二区三区视频 | 精品成人免费一区二区在线播放 | 黄色一级毛片 | 毛片av在线播放 | 天天操天天舔天天爽 | 999精品视频 | 青楼18春一级毛片 | 综合久久一区 | 狠狠操操操 | 久久精品国产精品青草 | 九九热精品视频 | 国产一区二区三区欧美 | 久久婷婷视频 | 成人亚洲视频在线观看 | 国产又粗又长又硬又猛电影 | 美女张开腿视频网站免费 | 91.成人天堂一区 | 国产精品美女在线观看 | 亚洲一区欧美 | 国产精品成人一区二区三区 | 国产xxxxxxxxxx| 日韩在线永久免费播放 | 天堂一区 | 日本久久网 | 天天操综 | 国产亚洲精品久久久久久豆腐 | 欧美日韩精品一区二区三区在线观看 | 免费xxxxx在线观看网站软件 | 日韩欧美国产成人一区二区 | 色综合天天综合网国产成人网 | 久久9久久| 久久青| 欧美日韩在线精品 | 久久久久久国产精品 | 久久激情综合 | 九九视频这里只有精品 | 婷婷亚洲综合 | 毛片网子 | 国产精品久久久久国产a级 国产精品欧美一区二区三区不卡 | 国产成人精品一区二 | 亚洲人成在线播放 | 色婷婷欧美| 久久精品视频亚洲 | 日韩欧美自拍 | 亚洲高清视频在线观看 | 国产高清精品在线 | 最新日韩在线观看视频 | 亚洲一区影院 | 五月激情综合网 | 亚洲一区二区久久 | 一区二区三区播放 | 在线一级视频 | 久久小草| 精国产品一区二区三区四季综 | 午夜精品一区二区三区在线视频 | 成人免费看片 | 成人毛片在线观看视频 | 欧美涩涩网站 | 欧美国产一区二区 | 精品国产欧美一区二区 | 吊视频一区二区三区 | 欧美日韩国产综合视频 | 中国妞xxxhd露脸偷拍视频 | 成年人在线看片 | 亚洲精品久久久久久久久久久久久 | 天天干天天躁 | 最新精品在线 | 亚洲国产精品99久久久久久久久 | 欧美一级小视频 | 久久久精品久久 | 嫩草影院网站入口 | 欧美日韩一区二区三区在线观看 | 日本福利在线观看 | 91在线观看视频 | 日韩一区二区三区精品 | 91中文字幕网 | 一区二区在线不卡 | 国产欧美日韩综合精品一区二区 | 亚洲欧美一区二区三区在线 | 日韩不卡一区二区 | 日韩免费高清视频 | 免费成人av网站 | 久草视频在线播放 | 日韩毛片免费在线观看 | 国产精品国色综合久久 | 97色免费视频 | 天天天干天天天操 | 国产视频三区 | 久久99精品久久久久久青青日本 | 免费的日批视频 | 亚洲在线视频 | 国产一区二区三区四区五区加勒比 | 黄视频网址 | 成人在线播放 | 亚洲社区在线 | 久久高清一区 | 思九九爱九九 | 亚洲人成中文字幕在线观看 | 日韩性色视频 | 欧美视频xxx | 91丨九色丨国产在线 | 亚洲欧洲日韩在线 | 91精品国产综合久久久久久丝袜 | 亚洲午夜视频在线观看 | 另类五月天 | 欧美激情综合五月色丁香小说 | 亚洲欧美一区二区三区四区 | 国产中文字幕一区 | 久久精品国产一区 | 日韩一区在线视频 | 国产精品福利久久 | 国产成人精品久久 | aaaa网站| 国产精品久久久久一区二区三区共 | 99热精品在线 | 成人国产精品久久久 | 国产精品久久久久久久久福交 | 国产高清在线 | 天堂一区二区三区 | 亚洲精品一区二区三区99 | 91.成人天堂一区 | 羞羞视频免费观看网站 | 久久精品亚洲 | 欧美一区二区三区久久精品 | 久久精品国产精品亚洲 | 91免费版在线观看 | 日日干天天操 | 国产精品一区2区 | 亚洲成人久久久 | 日韩一二三区 | 欧美日一区 | 精品日韩欧美一区二区三区 | 中文字幕在线电影 | 九九99 | 国产成人精品一区二区三区视频 | 狠狠干狠狠干 | 国产精品99视频 | 日本淫视频 | concern超碰在线 | 成人黄色在线观看 | 天堂在线中文字幕 | 国产精品毛片久久久久久久 | 免费看男女www网站入口在线 | 黄视频网站免费观看 | 精品九九九 | 久久亚洲精品中文字幕 | 亚洲免费在线观看 | 亚洲精品视频免费观看 | a成人在线 | 精品久久久久久久久久久 | 久久精品国产99国产 | 亚洲精品在线成人 | 一级毛片免费 | 欧美精品成人一区二区三区四区 | 亚洲欧美中文日韩在线v日本 | 91色爱| 欧美天堂在线观看 | 在线a电影 | 亚洲精品国产a久久久久久 国产毛片毛片 | 欧洲毛片 | 国产精品久久久久久久久久久久久 | 男人的天堂在线视频 | 国产欧美一区二区精品性色 | 大陆毛片 | 色欧美日韩| 羞羞视频在线观看视频 | 欧美一区二区在线观看 | 一级色视频 | 免费高潮视频95在线观看网站 | 久久国产一区二区三区 | 国产精品久久久久久婷婷天堂 | 日韩视频一区在线观看 | 欧美一区二区久久久 | 成年无码av片在线 | 成人av影视在线观看 | 九色 在线| 欧美啪| 亚洲成人一区二区 | 中文精品一区二区三区 | 色综合社区 | 久久精品1区 | 爽死777影院 | 91成人小视频 | 黄色毛片看看 | www.成人.com| 私人毛片免费高清视频 | 精品久久久久一区二区国产 | 欧美日韩一区二区三区在线电影 | 国产成人高清 | 91免费网 | 午夜影院免费 | 成人欧美一区二区三区在线播放 | 国产成人一区 | 国产精品美女久久久久久免费 | 欧美国产在线一区 | 久久综合色视频 | 激情网五月天 | 成人免费在线观看网址 | 国产成人jvid在线播放 | 国产999精品久久久影片官网 | 亚洲成人日韩 | 一区二区三区免费av | 国产高清在线看 | 亚洲日本国产 | 精品久久国产 | 亚洲免费观看视频 | 国产视频1 | 免费国产视频 | 亚洲一区二区在线免费观看 | 99精品视频在线免费观看 | 日韩一区二区成人 | 一级片在线观看 | 欧美日韩国产影院 | 成人乱人乱一区二区三区 | 91电影在线观看 | 青娱乐国产精品视频 | 欧美日本在线观看 | 久久久在线视频 | 中文字幕91| 国产精品毛片久久久久久久 | 午夜视频网站 | 91av免费| 亚洲成av人影片在线观看 | 日韩久久一区 | 欧美日韩综合 | 欧美一区免费 | 国产丝袜一区 | 国产三级在线观看 | 国产成人精品一区二区三区视频 | 精品美女在线观看视频在线观看 | 亚洲一区在线观看视频 | 羞羞视频免费观 | 中文字幕最新在线 | 亚洲福利一区 | 国产欧美精品一区二区三区 | 一区二区欧美视频 | 欧美日韩国产精品久久久久 | 亚洲欧美日韩在线一区 | 日本中文字幕一区 | 中文字幕一区二区三区四区不卡 | 亚洲视频三区 | www.色涩涩.com网站 | 免费成人高清 | 最近韩国日本免费观看mv免费版 | 日韩一级黄色大片 | 日韩国产欧美精品 | 久久久国产精品入口麻豆 | www.com国产精品 | 国产一级毛片国语一级 | 国产99久久 | 久久久久久久久久久久久av | 黄色小视频在线观看 | 国产依人 | 国产精品一区二区三区免费 | 激情.com| 欧美成人综合在线 | 久久成人精品 | 在线观看的av | 国产看片网站 | 日韩欧美国产网站 | 日本天天操 | 色婷婷导航| 亚洲91 | 中文字幕视频 | 亚洲中午字幕 | 亚洲综合大片69999 | 男女爱爱免费视频 | 欧美老妇交乱视频 | 久久精品免费一区二区 | 亚洲一区二区在线视频 | 国产在线1 | 高清国产一区二区三区四区五区 | 另类国产ts人妖高潮系列视频 | 久久天堂av综合合色蜜桃网 | 九九综合 | 亚洲一区二区三区四区 | 免费av中国| 日本免费xxxx| 欧美一区二区免费在线 | 91视频爱爱| 国产精品久久久久久久久久久免费看 | 欧美1级| 国产在线一区二区三区 | 天天干夜夜爽 | 国产 欧美 日韩 一区 | 日韩久久一区二区 | 国产在线一 | 欧美成年网站 | 成人午夜视频网 | 久久99精品久久久久久琪琪 | 九九热有精品 | 亚洲视频一区二区三区 | 午夜成人在线视频 | 精品欧美一区二区三区久久久 | 另类天堂av | 欧美一级黄带 | 日日摸日日碰夜夜爽亚洲精品蜜乳 | 国产精品自在线 | 久久久国产一区二区三区 | 日本中文字幕一区 | 成人午夜在线 | 日韩视频三区 | 天天操免费 | 久久成人精品 | 91影库| 91.成人天堂一区 | 在线观看国产视频 | 亚洲一区二区三区免费 | 成人在线视频网址 | 欧美黄色一区 | 日本一区二区高清不卡 | 久在线视频 | 欧美高清视频在线观看 | 永久看片 | 人人干美女| 亚洲一区中文字幕在线观看 | 久久久91精品国产一区二区 | 成人免费视频7777777 | 亚洲香蕉精品 | 在线干 | 欧美成人一区二区三区片免费 | 日韩精品视频在线观看免费 | 最新国产视频 | chinese中国真实乱对白 | 成人免费一区二区三区视频网站 | 亚洲精品久久久 | 精品香蕉一区二区三区 | 超级乱淫片国语对白免费视频 | 日韩视频在线观看 | 国产精品久久久久久亚洲影视 | 亚洲国产日本 | 日韩一区二区在线观看 | 欧美一区二区三区在线 | 欧洲精品一区二区 | 一级片观看| 青青草一区二区 | 波多野结衣精品 | 91精品国产综合久久久蜜臀图片 | 久久国内精品 | 亚洲精品视频一区二区三区 | 欧美在线一区二区三区 | 自拍偷拍专区 | 欧美成人一区二区三区片免费 | 一级日批片 | 国产一区二区精品 | 亚洲黄色一区二区三区 | 成人免费共享视频 | 国产高清精品一区二区三区 | 欧美日韩在线精品 | 欧洲一级毛片 | 亚洲色图3p | 成人免费黄色小视频 | 久久久久久久久久穴 | 国产精品不卡 | www.久久.com | 日韩欧美在线观看视频 | 99re99| 91一区二区在线 | 在线a视频 | 久久777| 国产999精品久久久久久麻豆 | 中文字幕日韩一区二区不卡 | 日韩在线| 欧美日韩激情 | 成人国产在线观看 | 国产在线视频网站 | 久久精品久久精品国产大片 | 国产欧美日韩在线观看 | 麻豆一区 | 天天干狠狠干 | 欧美一区永久视频免费观看 | 日韩在线中出 | 日本视频一区二区三区 | 国产精品国产成人国产三级 | 亚洲精品一区在线观看 | 国产无区一区二区三麻豆 | 日韩亚洲一区二区 | 成人一区二区三区久久精品嫩草 | 精品中文字幕在线 | 超碰国产在线 | 色视频一区二区三区 | 久久国产婷婷国产香蕉 | 国产精品久久久久久久久久久久冷 | 91精品国产综合久久久久久蜜臀 | 亚洲精品成人av | www.成人久久 | 激情六月综合 | 亚洲一区中文字幕 | 国产视频2021| 久久久久国产一区二区三区 |