黄色网页视频 I 影音先锋日日狠狠久久 I 秋霞午夜毛片 I 秋霞一二三区 I 国产成人片无码视频 I 国产 精品 自在自线 I av免费观看网站 I 日本精品久久久久中文字幕5 I 91看视频 I 看全色黄大色黄女片18 I 精品不卡一区 I 亚洲最新精品 I 欧美 激情 在线 I 人妻少妇精品久久 I 国产99视频精品免费专区 I 欧美影院 I 欧美精品在欧美一区二区少妇 I av大片网站 I 国产精品黄色片 I 888久久 I 狠狠干最新 I 看看黄色一级片 I 黄色精品久久 I 三级av在线 I 69色综合 I 国产日韩欧美91 I 亚洲精品偷拍 I 激情小说亚洲图片 I 久久国产视频精品 I 国产综合精品一区二区三区 I 色婷婷国产 I 最新成人av在线 I 国产私拍精品 I 日韩成人影音 I 日日夜夜天天综合

Android應用程序啟動過程源代碼分析

系統 2318 0

前文簡要介紹了Android應用程序的Activity的啟動過程。在Android系統中,應用程序是由Activity組成的,因此,應用程序的啟動過程實際上就是應用程序中的默認Activity的啟動過程,本文將詳細分析應用程序框架層的源代碼,了解Android應用程序的啟動過程。

在上一篇文章 Android應用程序的Activity啟動過程簡要介紹和學習計劃 中,我們舉例子說明了啟動Android應用程序中的Activity的兩種情景,其中,在手機屏幕中點擊應用程序圖標的情景就會引發Android應用程序中的默認Activity的啟動,從而把應用程序啟動起來。這種啟動方式的特點是會啟動一個新的進程來加載相應的Activity。這里,我們繼續以這個例子為例來說明Android應用程序的啟動過程,即MainActivity的啟動過程。

MainActivity的啟動過程如下圖所示:

Android應用程序啟動過程源代碼分析

點擊查看大圖

下面詳細分析每一步是如何實現的。

Step 1. Launcher.startActivitySafely

在Android系統中,應用程序是由Launcher啟動起來的,其實,Launcher本身也是一個應用程序,其它的應用程序安裝后,就會Launcher的界面上出現一個相應的圖標,點擊這個圖標時,Launcher就會對應的應用程序啟動起來。

Launcher的源代碼工程在packages/apps/Launcher2目錄下,負責啟動其它應用程序的源代碼實現在src/com/android/launcher2/Launcher.java文件中:

    /**
* Default launcher application.
*/
public final class Launcher extends Activity
		implements View.OnClickListener, OnLongClickListener, LauncherModel.Callbacks, AllAppsView.Watcher {

	......

	/**
	* Launches the intent referred by the clicked shortcut.
	*
	* @param v The view representing the clicked shortcut.
	*/
	public void onClick(View v) {
		Object tag = v.getTag();
		if (tag instanceof ShortcutInfo) {
			// Open shortcut
			final Intent intent = ((ShortcutInfo) tag).intent;
			int[] pos = new int[2];
			v.getLocationOnScreen(pos);
			intent.setSourceBounds(new Rect(pos[0], pos[1],
				pos[0] + v.getWidth(), pos[1] + v.getHeight()));
			startActivitySafely(intent, tag);
		} else if (tag instanceof FolderInfo) {
			......
		} else if (v == mHandleView) {
			......
		}
	}

	void startActivitySafely(Intent intent, Object tag) {
		intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
		try {
			startActivity(intent);
		} catch (ActivityNotFoundException e) {
			......
		} catch (SecurityException e) {
			......
		}
	}

	......

}
  
回憶一下前面一篇文章 Android應用程序的Activity啟動過程簡要介紹和學習計劃 說到的應用程序Activity,它的默認Activity是MainActivity,這里是AndroidManifest.xml文件中配置的:

    <activity android:name=".MainActivity"  
      android:label="@string/app_name">  
       <intent-filter>  
        <action android:name="android.intent.action.MAIN" />  
        <category android:name="android.intent.category.LAUNCHER" />  
    </intent-filter>  
</activity>  
  
因此,這里的intent包含的信息為:action = "android.intent.action.Main",category="android.intent.category.LAUNCHER", cmp="shy.luo.activity/.MainActivity",表示它要啟動的Activity為shy.luo.activity.MainActivity。Intent.FLAG_ACTIVITY_NEW_TASK表示要在一個新的Task中啟動這個Activity,注意,Task是Android系統中的概念,它不同于進程Process的概念。簡單地說,一個Task是一系列Activity的集合,這個集合是以堆棧的形式來組織的,遵循后進先出的原則。事實上,Task是一個非常復雜的概念,有興趣的讀者可以到官網 http://developer.android.com/guide/topics/manifest/activity-element.html 查看相關的資料。這里,我們只要知道,這個MainActivity要在一個新的Task中啟動就可以了。

Step 2. Activity.startActivity

在Step 1中,我們看到,Launcher繼承于Activity類,而Activity類實現了startActivity函數,因此,這里就調用了Activity.startActivity函數,它實現在frameworks/base/core/java/android/app/Activity.java文件中:

    public class Activity extends ContextThemeWrapper
		implements LayoutInflater.Factory,
		Window.Callback, KeyEvent.Callback,
		OnCreateContextMenuListener, ComponentCallbacks {

	......

	@Override
	public void startActivity(Intent intent) {
		startActivityForResult(intent, -1);
	}

	......

}
  
這個函數實現很簡單,它調用startActivityForResult來進一步處理,第二個參數傳入-1表示不需要這個Actvity結束后的返回結果。

Step 3.Activity.startActivityForResult

這個函數也是實現在frameworks/base/core/java/android/app/Activity.java文件中:

    public class Activity extends ContextThemeWrapper
		implements LayoutInflater.Factory,
		Window.Callback, KeyEvent.Callback,
		OnCreateContextMenuListener, ComponentCallbacks {

	......

	public void startActivityForResult(Intent intent, int requestCode) {
		if (mParent == null) {
			Instrumentation.ActivityResult ar =
				mInstrumentation.execStartActivity(
				this, mMainThread.getApplicationThread(), mToken, this,
				intent, requestCode);
			......
		} else {
			......
		}


	......

}
  
這里的mInstrumentation是Activity類的成員變量,它的類型是Intrumentation,定義在frameworks/base/core/java/android/app/Instrumentation.java文件中,它用來監控應用程序和系統的交互。

這里的mMainThread也是Activity類的成員變量,它的類型是ActivityThread,它代表的是應用程序的主線程,我們在 Android系統在新進程中啟動自定義服務過程(startService)的原理分析 一文中已經介紹過了。這里通過mMainThread.getApplicationThread獲得它里面的ApplicationThread成員變量,它是一個Binder對象,后面我們會看到,ActivityManagerService會使用它來和ActivityThread來進行進程間通信。這里我們需注意的是,這里的mMainThread代表的是Launcher應用程序運行的進程。

這里的mToken也是Activity類的成員變量,它是一個Binder對象的遠程接口。

Step 4. Instrumentation.execStartActivity
這個函數定義在frameworks/base/core/java/android/app/Instrumentation.java文件中:

    public class Instrumentation {

	......

	public ActivityResult execStartActivity(
	Context who, IBinder contextThread, IBinder token, Activity target,
	Intent intent, int requestCode) {
		IApplicationThread whoThread = (IApplicationThread) contextThread;
		if (mActivityMonitors != null) {
			......
		}
		try {
			int result = ActivityManagerNative.getDefault()
				.startActivity(whoThread, intent,
				intent.resolveTypeIfNeeded(who.getContentResolver()),
				null, 0, token, target != null ? target.mEmbeddedID : null,
				requestCode, false, false);
			......
		} catch (RemoteException e) {
		}
		return null;
	}

	......

}
  
這里的ActivityManagerNative.getDefault返回ActivityManagerService的遠程接口,即ActivityManagerProxy接口,具體可以參考 Android系統在新進程中啟動自定義服務過程(startService)的原理分析 一文。

這里的intent.resolveTypeIfNeeded返回這個intent的MIME類型,在這個例子中,沒有AndroidManifest.xml設置MainActivity的MIME類型,因此,這里返回null。

這里的target不為null,但是target.mEmbddedID為null,我們不用關注。

Step 5. ActivityManagerProxy.startActivity

這個函數定義在frameworks/base/core/java/android/app/ActivityManagerNative.java文件中:

    class ActivityManagerProxy implements IActivityManager
{

	......

	public int startActivity(IApplicationThread caller, Intent intent,
			String resolvedType, Uri[] grantedUriPermissions, int grantedMode,
			IBinder resultTo, String resultWho,
			int requestCode, boolean onlyIfNeeded,
			boolean debug) throws RemoteException {
		Parcel data = Parcel.obtain();
		Parcel reply = Parcel.obtain();
		data.writeInterfaceToken(IActivityManager.descriptor);
		data.writeStrongBinder(caller != null ? caller.asBinder() : null);
		intent.writeToParcel(data, 0);
		data.writeString(resolvedType);
		data.writeTypedArray(grantedUriPermissions, 0);
		data.writeInt(grantedMode);
		data.writeStrongBinder(resultTo);
		data.writeString(resultWho);
		data.writeInt(requestCode);
		data.writeInt(onlyIfNeeded ? 1 : 0);
		data.writeInt(debug ? 1 : 0);
		mRemote.transact(START_ACTIVITY_TRANSACTION, data, reply, 0);
		reply.readException();
		int result = reply.readInt();
		reply.recycle();
		data.recycle();
		return result;
	}

	......

}
  
這里的參數比較多,我們先整理一下。從上面的調用可以知道,這里的參數resolvedType、grantedUriPermissions和resultWho均為null;參數caller為ApplicationThread類型的Binder實體;參數resultTo為一個Binder實體的遠程接口,我們先不關注它;參數grantedMode為0,我們也先不關注它;參數requestCode為-1;參數onlyIfNeeded和debug均空false。

Step 6. ActivityManagerService.startActivity

上一步Step 5通過Binder驅動程序就進入到ActivityManagerService的startActivity函數來了,它定義在frameworks/base/services/java/com/android/server/am/ActivityManagerService.java文件中:

    public final class ActivityManagerService extends ActivityManagerNative
		implements Watchdog.Monitor, BatteryStatsImpl.BatteryCallback {

	......

	public final int startActivity(IApplicationThread caller,
			Intent intent, String resolvedType, Uri[] grantedUriPermissions,
			int grantedMode, IBinder resultTo,
			String resultWho, int requestCode, boolean onlyIfNeeded,
			boolean debug) {
		return mMainStack.startActivityMayWait(caller, intent, resolvedType,
			grantedUriPermissions, grantedMode, resultTo, resultWho,
			requestCode, onlyIfNeeded, debug, null, null);
	}


	......

}
  
這里只是簡單地將操作轉發給成員變量mMainStack的startActivityMayWait函數,這里的mMainStack的類型為ActivityStack。

Step 7.ActivityStack.startActivityMayWait

這個函數定義在frameworks/base/services/java/com/android/server/am/ActivityStack.java文件中:

    public class ActivityStack {

	......

	final int startActivityMayWait(IApplicationThread caller,
			Intent intent, String resolvedType, Uri[] grantedUriPermissions,
			int grantedMode, IBinder resultTo,
			String resultWho, int requestCode, boolean onlyIfNeeded,
			boolean debug, WaitResult outResult, Configuration config) {

		......

		boolean componentSpecified = intent.getComponent() != null;

		// Don't modify the client's object!
		intent = new Intent(intent);

		// Collect information about the target of the Intent.
		ActivityInfo aInfo;
		try {
			ResolveInfo rInfo =
				AppGlobals.getPackageManager().resolveIntent(
				intent, resolvedType,
				PackageManager.MATCH_DEFAULT_ONLY
				| ActivityManagerService.STOCK_PM_FLAGS);
			aInfo = rInfo != null ? rInfo.activityInfo : null;
		} catch (RemoteException e) {
			......
		}

		if (aInfo != null) {
			// Store the found target back into the intent, because now that
			// we have it we never want to do this again.  For example, if the
			// user navigates back to this point in the history, we should
			// always restart the exact same activity.
			intent.setComponent(new ComponentName(
				aInfo.applicationInfo.packageName, aInfo.name));
			......
		}

		synchronized (mService) {
			int callingPid;
			int callingUid;
			if (caller == null) {
				......
			} else {
				callingPid = callingUid = -1;
			}

			mConfigWillChange = config != null
				&& mService.mConfiguration.diff(config) != 0;

			......

			if (mMainStack && aInfo != null &&
				(aInfo.applicationInfo.flags&ApplicationInfo.FLAG_CANT_SAVE_STATE) != 0) {
				  
		              ......

			}

			int res = startActivityLocked(caller, intent, resolvedType,
				grantedUriPermissions, grantedMode, aInfo,
				resultTo, resultWho, requestCode, callingPid, callingUid,
				onlyIfNeeded, componentSpecified);

			if (mConfigWillChange && mMainStack) {
				......
			}

			......

			if (outResult != null) {
				......
			}

			return res;
		}

	}

	......

}
  
注意,從Step 6傳下來的參數outResult和config均為null,此外,表達式(aInfo.applicationInfo.flags&ApplicationInfo.FLAG_CANT_SAVE_STATE) != 0為false,因此,這里忽略了無關代碼。

下面語句對參數intent的內容進行解析,得到MainActivity的相關信息,保存在aInfo變量中:

        ActivityInfo aInfo;
    try {
	ResolveInfo rInfo =
	AppGlobals.getPackageManager().resolveIntent(
		intent, resolvedType,
		PackageManager.MATCH_DEFAULT_ONLY
		| ActivityManagerService.STOCK_PM_FLAGS);
	aInfo = rInfo != null ? rInfo.activityInfo : null;
    } catch (RemoteException e) {
		......
    }
  
解析之后,得到的aInfo.applicationInfo.packageName的值為"shy.luo.activity",aInfo.name的值為"shy.luo.activity.MainActivity",這是在這個實例的配置文件AndroidManifest.xml里面配置的。

此外,函數開始的地方調用intent.getComponent()函數的返回值不為null,因此,這里的componentSpecified變量為true。

接下去就調用startActivityLocked進一步處理了。

Step 8. ActivityStack.startActivityLocked

這個函數定義在frameworks/base/services/java/com/android/server/am/ActivityStack.java文件中:

    public class ActivityStack {

	......

	final int startActivityLocked(IApplicationThread caller,
		    Intent intent, String resolvedType,
		    Uri[] grantedUriPermissions,
		    int grantedMode, ActivityInfo aInfo, IBinder resultTo,
	            String resultWho, int requestCode,
		    int callingPid, int callingUid, boolean onlyIfNeeded,
		    boolean componentSpecified) {
	        int err = START_SUCCESS;

		ProcessRecord callerApp = null;
		if (caller != null) {
			callerApp = mService.getRecordForAppLocked(caller);
			if (callerApp != null) {
				callingPid = callerApp.pid;
				callingUid = callerApp.info.uid;
			} else {
				......
			}
		}

		......

		ActivityRecord sourceRecord = null;
		ActivityRecord resultRecord = null;
		if (resultTo != null) {
			int index = indexOfTokenLocked(resultTo);
			
			......
				
			if (index >= 0) {
				sourceRecord = (ActivityRecord)mHistory.get(index);
				if (requestCode >= 0 && !sourceRecord.finishing) {
					......
				}
			}
		}

		int launchFlags = intent.getFlags();

		if ((launchFlags&Intent.FLAG_ACTIVITY_FORWARD_RESULT) != 0
			&& sourceRecord != null) {
			......
		}

		if (err == START_SUCCESS && intent.getComponent() == null) {
			......
		}

		if (err == START_SUCCESS && aInfo == null) {
			......
		}

		if (err != START_SUCCESS) {
			......
		}

		......

		ActivityRecord r = new ActivityRecord(mService, this, callerApp, callingUid,
			intent, resolvedType, aInfo, mService.mConfiguration,
			resultRecord, resultWho, requestCode, componentSpecified);

		......

		return startActivityUncheckedLocked(r, sourceRecord,
			grantedUriPermissions, grantedMode, onlyIfNeeded, true);
	}


	......

}
  
從傳進來的參數caller得到調用者的進程信息,并保存在callerApp變量中,這里就是Launcher應用程序的進程信息了。

前面說過,參數resultTo是Launcher這個Activity里面的一個Binder對象,通過它可以獲得Launcher這個Activity的相關信息,保存在sourceRecord變量中。
再接下來,創建即將要啟動的Activity的相關信息,并保存在r變量中:

    ActivityRecord r = new ActivityRecord(mService, this, callerApp, callingUid,
	intent, resolvedType, aInfo, mService.mConfiguration,
	resultRecord, resultWho, requestCode, componentSpecified);
  
接著調用startActivityUncheckedLocked函數進行下一步操作。

Step 9. ActivityStack.startActivityUncheckedLocked

這個函數定義在frameworks/base/services/java/com/android/server/am/ActivityStack.java文件中:

    public class ActivityStack {

	......

	final int startActivityUncheckedLocked(ActivityRecord r,
		ActivityRecord sourceRecord, Uri[] grantedUriPermissions,
		int grantedMode, boolean onlyIfNeeded, boolean doResume) {
		final Intent intent = r.intent;
		final int callingUid = r.launchedFromUid;

		int launchFlags = intent.getFlags();

		// We'll invoke onUserLeaving before onPause only if the launching
		// activity did not explicitly state that this is an automated launch.
		mUserLeaving = (launchFlags&Intent.FLAG_ACTIVITY_NO_USER_ACTION) == 0;
		
		......

		ActivityRecord notTop = (launchFlags&Intent.FLAG_ACTIVITY_PREVIOUS_IS_TOP)
			!= 0 ? r : null;

		// If the onlyIfNeeded flag is set, then we can do this if the activity
		// being launched is the same as the one making the call...  or, as
		// a special case, if we do not know the caller then we count the
		// current top activity as the caller.
		if (onlyIfNeeded) {
			......
		}

		if (sourceRecord == null) {
			......
		} else if (sourceRecord.launchMode == ActivityInfo.LAUNCH_SINGLE_INSTANCE) {
			......
		} else if (r.launchMode == ActivityInfo.LAUNCH_SINGLE_INSTANCE
			|| r.launchMode == ActivityInfo.LAUNCH_SINGLE_TASK) {
			......
		}

		if (r.resultTo != null && (launchFlags&Intent.FLAG_ACTIVITY_NEW_TASK) != 0) {
			......
		}

		boolean addingToTask = false;
		if (((launchFlags&Intent.FLAG_ACTIVITY_NEW_TASK) != 0 &&
			(launchFlags&Intent.FLAG_ACTIVITY_MULTIPLE_TASK) == 0)
			|| r.launchMode == ActivityInfo.LAUNCH_SINGLE_TASK
			|| r.launchMode == ActivityInfo.LAUNCH_SINGLE_INSTANCE) {
				// If bring to front is requested, and no result is requested, and
				// we can find a task that was started with this same
				// component, then instead of launching bring that one to the front.
				if (r.resultTo == null) {
					// See if there is a task to bring to the front.  If this is
					// a SINGLE_INSTANCE activity, there can be one and only one
					// instance of it in the history, and it is always in its own
					// unique task, so we do a special search.
					ActivityRecord taskTop = r.launchMode != ActivityInfo.LAUNCH_SINGLE_INSTANCE
						? findTaskLocked(intent, r.info)
						: findActivityLocked(intent, r.info);
					if (taskTop != null) {
						......
					}
				}
		}

		......

		if (r.packageName != null) {
			// If the activity being launched is the same as the one currently
			// at the top, then we need to check if it should only be launched
			// once.
			ActivityRecord top = topRunningNonDelayedActivityLocked(notTop);
			if (top != null && r.resultTo == null) {
				if (top.realActivity.equals(r.realActivity)) {
					......
				}
			}

		} else {
			......
		}

		boolean newTask = false;

		// Should this be considered a new task?
		if (r.resultTo == null && !addingToTask
			&& (launchFlags&Intent.FLAG_ACTIVITY_NEW_TASK) != 0) {
				// todo: should do better management of integers.
				mService.mCurTask++;
				if (mService.mCurTask <= 0) {
					mService.mCurTask = 1;
				}
				r.task = new TaskRecord(mService.mCurTask, r.info, intent,
					(r.info.flags&ActivityInfo.FLAG_CLEAR_TASK_ON_LAUNCH) != 0);
				......
				newTask = true;
				if (mMainStack) {
					mService.addRecentTaskLocked(r.task);
				}

		} else if (sourceRecord != null) {
			......
		} else {
			......
		}

		......

		startActivityLocked(r, newTask, doResume);
		return START_SUCCESS;
	}

	......

}
  
函數首先獲得intent的標志值,保存在launchFlags變量中。

這個intent的標志值的位Intent.FLAG_ACTIVITY_NO_USER_ACTION沒有置位,因此 ,成員變量mUserLeaving的值為true。

這個intent的標志值的位Intent.FLAG_ACTIVITY_PREVIOUS_IS_TOP也沒有置位,因此,變量notTop的值為null。

由于在這個例子的AndroidManifest.xml文件中,MainActivity沒有配置launchMode屬值,因此,這里的r.launchMode為默認值0,表示以標準(Standard,或者稱為ActivityInfo.LAUNCH_MULTIPLE)的方式來啟動這個Activity。Activity的啟動方式有四種,其余三種分別是ActivityInfo.LAUNCH_SINGLE_INSTANCE、ActivityInfo.LAUNCH_SINGLE_TASK和ActivityInfo.LAUNCH_SINGLE_TOP,具體可以參考官方網站 http://developer.android.com/reference/android/content/pm/ActivityInfo.html 。

傳進來的參數r.resultTo為null,表示Launcher不需要等這個即將要啟動的MainActivity的執行結果。

由于這個intent的標志值的位Intent.FLAG_ACTIVITY_NEW_TASK被置位,而且Intent.FLAG_ACTIVITY_MULTIPLE_TASK沒有置位,因此,下面的if語句會被執行:

        if (((launchFlags&Intent.FLAG_ACTIVITY_NEW_TASK) != 0 &&
	(launchFlags&Intent.FLAG_ACTIVITY_MULTIPLE_TASK) == 0)
	|| r.launchMode == ActivityInfo.LAUNCH_SINGLE_TASK
	|| r.launchMode == ActivityInfo.LAUNCH_SINGLE_INSTANCE) {
		// If bring to front is requested, and no result is requested, and
		// we can find a task that was started with this same
		// component, then instead of launching bring that one to the front.
		if (r.resultTo == null) {
			// See if there is a task to bring to the front.  If this is
			// a SINGLE_INSTANCE activity, there can be one and only one
			// instance of it in the history, and it is always in its own
			// unique task, so we do a special search.
			ActivityRecord taskTop = r.launchMode != ActivityInfo.LAUNCH_SINGLE_INSTANCE
				? findTaskLocked(intent, r.info)
				: findActivityLocked(intent, r.info);
			if (taskTop != null) {
				......
			}
		}
    }
  
這段代碼的邏輯是查看一下,當前有沒有Task可以用來執行這個Activity。由于r.launchMode的值不為ActivityInfo.LAUNCH_SINGLE_INSTANCE,因此,它通過findTaskLocked函數來查找存不存這樣的Task,這里返回的結果是null,即taskTop為null,因此,需要創建一個新的Task來啟動這個Activity。

接著往下看:

        if (r.packageName != null) {
	// If the activity being launched is the same as the one currently
	// at the top, then we need to check if it should only be launched
	// once.
	ActivityRecord top = topRunningNonDelayedActivityLocked(notTop);
	if (top != null && r.resultTo == null) {
		if (top.realActivity.equals(r.realActivity)) {
			......
		}
	}

    } 
  
這段代碼的邏輯是看一下,當前在堆棧頂端的Activity是否就是即將要啟動的Activity,有些情況下,如果即將要啟動的Activity就在堆棧的頂端,那么,就不會重新啟動這個Activity的別一個實例了,具體可以參考官方網站 http://developer.android.com/reference/android/content/pm/ActivityInfo.html ?,F在處理堆棧頂端的Activity是Launcher,與我們即將要啟動的MainActivity不是同一個Activity,因此,這里不用進一步處理上述介紹的情況。

執行到這里,我們知道,要在一個新的Task里面來啟動這個Activity了,于是新創建一個Task:

       if (r.resultTo == null && !addingToTask
	&& (launchFlags&Intent.FLAG_ACTIVITY_NEW_TASK) != 0) {
	// todo: should do better management of integers.
	mService.mCurTask++;
	if (mService.mCurTask <= 0) {
		mService.mCurTask = 1;
	}
	r.task = new TaskRecord(mService.mCurTask, r.info, intent,
		(r.info.flags&ActivityInfo.FLAG_CLEAR_TASK_ON_LAUNCH) != 0);
	......
	newTask = true;
	if (mMainStack) {
		mService.addRecentTaskLocked(r.task);
	}

    }
  
新建的Task保存在r.task域中,同時,添加到mService中去,這里的mService就是ActivityManagerService了。

最后就進入startActivityLocked(r, newTask, doResume)進一步處理了。這個函數定義在frameworks/base/services/java/com/android/server/am/ActivityStack.java文件中:

    public class ActivityStack {

	......

	private final void startActivityLocked(ActivityRecord r, boolean newTask,
			boolean doResume) {
		final int NH = mHistory.size();

		int addPos = -1;

		if (!newTask) {
			......
		}

		// Place a new activity at top of stack, so it is next to interact
		// with the user.
		if (addPos < 0) {
			addPos = NH;
		}

		// If we are not placing the new activity frontmost, we do not want
		// to deliver the onUserLeaving callback to the actual frontmost
		// activity
		if (addPos < NH) {
			......
		}

		// Slot the activity into the history stack and proceed
		mHistory.add(addPos, r);
		r.inHistory = true;
		r.frontOfTask = newTask;
		r.task.numActivities++;
		if (NH > 0) {
			// We want to show the starting preview window if we are
			// switching to a new task, or the next activity's process is
			// not currently running.
			......
		} else {
			// If this is the first activity, don't do any fancy animations,
			// because there is nothing for it to animate on top of.
			......
		}
		
		......

		if (doResume) {
			resumeTopActivityLocked(null);
		}
	}

	......

}
  
這里的NH表示當前系統中歷史任務的個數,這里肯定是大于0,因為Launcher已經跑起來了。當NH>0時,并且現在要切換新任務時,要做一些任務切的界面操作,這段代碼我們就不看了,這里不會影響到下面啟Activity的過程,有興趣的讀取可以自己研究一下。

這里傳進來的參數doResume為true,于是調用resumeTopActivityLocked進一步操作。

Step 10. Activity.resumeTopActivityLocked

這個函數定義在frameworks/base/services/java/com/android/server/am/ActivityStack.java文件中:

    public class ActivityStack {

	......

	/**
	* Ensure that the top activity in the stack is resumed.
	*
	* @param prev The previously resumed activity, for when in the process
	* of pausing; can be null to call from elsewhere.
	*
	* @return Returns true if something is being resumed, or false if
	* nothing happened.
	*/
	final boolean resumeTopActivityLocked(ActivityRecord prev) {
		// Find the first activity that is not finishing.
		ActivityRecord next = topRunningActivityLocked(null);

		// Remember how we'll process this pause/resume situation, and ensure
		// that the state is reset however we wind up proceeding.
		final boolean userLeaving = mUserLeaving;
		mUserLeaving = false;

		if (next == null) {
			......
		}

		next.delayedResume = false;

		// If the top activity is the resumed one, nothing to do.
		if (mResumedActivity == next && next.state == ActivityState.RESUMED) {
			......
		}

		// If we are sleeping, and there is no resumed activity, and the top
		// activity is paused, well that is the state we want.
		if ((mService.mSleeping || mService.mShuttingDown)
			&& mLastPausedActivity == next && next.state == ActivityState.PAUSED) {
			......
		}

		......

		// If we are currently pausing an activity, then don't do anything
		// until that is done.
		if (mPausingActivity != null) {
			......
		}

		......

		// We need to start pausing the current activity so the top one
		// can be resumed...
		if (mResumedActivity != null) {
			......
			startPausingLocked(userLeaving, false);
			return true;
		}

		......
	}

	......

}
  
函數先通過調用topRunningActivityLocked函數獲得堆棧頂端的Activity,這里就是MainActivity了,這是在上面的Step 9設置好的,保存在next變量中。

接下來把mUserLeaving的保存在本地變量userLeaving中,然后重新設置為false,在上面的Step 9中,mUserLeaving的值為true,因此,這里的userLeaving為true。

這里的mResumedActivity為Launcher,因為Launcher是當前正被執行的Activity。

當我們處理休眠狀態時,mLastPausedActivity保存堆棧頂端的Activity,因為當前不是休眠狀態,所以mLastPausedActivity為null。

有了這些信息之后,下面的語句就容易理解了:

        // If the top activity is the resumed one, nothing to do.
    if (mResumedActivity == next && next.state == ActivityState.RESUMED) {
	......
    }

    // If we are sleeping, and there is no resumed activity, and the top
    // activity is paused, well that is the state we want.
    if ((mService.mSleeping || mService.mShuttingDown)
	&& mLastPausedActivity == next && next.state == ActivityState.PAUSED) {
	......
    }
  
它首先看要啟動的Activity是否就是當前處理Resumed狀態的Activity,如果是的話,那就什么都不用做,直接返回就可以了;否則再看一下系統當前是否休眠狀態,如果是的話,再看看要啟動的Activity是否就是當前處于堆棧頂端的Activity,如果是的話,也是什么都不用做。

上面兩個條件都不滿足,因此,在繼續往下執行之前,首先要把當處于Resumed狀態的Activity推入Paused狀態,然后才可以啟動新的Activity。但是在將當前這個Resumed狀態的Activity推入Paused狀態之前,首先要看一下當前是否有Activity正在進入Pausing狀態,如果有的話,當前這個Resumed狀態的Activity就要稍后才能進入Paused狀態了,這樣就保證了所有需要進入Paused狀態的Activity串行處理。

這里沒有處于Pausing狀態的Activity,即mPausingActivity為null,而且mResumedActivity也不為null,于是就調用startPausingLocked函數把Launcher推入Paused狀態去了。

Step 11. ActivityStack.startPausingLocked

這個函數定義在frameworks/base/services/java/com/android/server/am/ActivityStack.java文件中:

    public class ActivityStack {

	......

	private final void startPausingLocked(boolean userLeaving, boolean uiSleeping) {
		if (mPausingActivity != null) {
			......
		}
		ActivityRecord prev = mResumedActivity;
		if (prev == null) {
			......
		}
		......
		mResumedActivity = null;
		mPausingActivity = prev;
		mLastPausedActivity = prev;
		prev.state = ActivityState.PAUSING;
		......

		if (prev.app != null && prev.app.thread != null) {
			......
			try {
				......
				prev.app.thread.schedulePauseActivity(prev, prev.finishing, userLeaving,
					prev.configChangeFlags);
				......
			} catch (Exception e) {
				......
			}
		} else {
			......
		}

		......
	
	}

	......

}
  

函數首先把mResumedActivity保存在本地變量prev中。在上一步Step 10中,說到mResumedActivity就是Launcher,因此,這里把Launcher進程中的ApplicationThread對象取出來,通過它來通知Launcher這個Activity它要進入Paused狀態了。當然,這里的prev.app.thread是一個ApplicationThread對象的遠程接口,通過調用這個遠程接口的schedulePauseActivity來通知Launcher進入Paused狀態。

參數prev.finishing表示prev所代表的Activity是否正在等待結束的Activity列表中,由于Laucher這個Activity還沒結束,所以這里為false;參數prev.configChangeFlags表示哪些config發生了變化,這里我們不關心它的值。

Step 12.ApplicationThreadProxy.schedulePauseActivity

這個函數定義在frameworks/base/core/java/android/app/ApplicationThreadNative.java文件中:

    class ApplicationThreadProxy implements IApplicationThread {
	
	......

	public final void schedulePauseActivity(IBinder token, boolean finished,
	boolean userLeaving, int configChanges) throws RemoteException {
		Parcel data = Parcel.obtain();
		data.writeInterfaceToken(IApplicationThread.descriptor);
		data.writeStrongBinder(token);
		data.writeInt(finished ? 1 : 0);
		data.writeInt(userLeaving ? 1 :0);
		data.writeInt(configChanges);
		mRemote.transact(SCHEDULE_PAUSE_ACTIVITY_TRANSACTION, data, null,
			IBinder.FLAG_ONEWAY);
		data.recycle();
	}

	......

}
  

這個函數通過Binder進程間通信機制進入到ApplicationThread.schedulePauseActivity函數中。

Step 13. ApplicationThread.schedulePauseActivity

這個函數定義在frameworks/base/core/java/android/app/ActivityThread.java文件中,它是ActivityThread的內部類:

    public final class ActivityThread {
	
	......

	private final class ApplicationThread extends ApplicationThreadNative {
		
		......

		public final void schedulePauseActivity(IBinder token, boolean finished,
				boolean userLeaving, int configChanges) {
			queueOrSendMessage(
				finished ? H.PAUSE_ACTIVITY_FINISHING : H.PAUSE_ACTIVITY,
				token,
				(userLeaving ? 1 : 0),
				configChanges);
		}

		......

	}

	......

}
  
這里調用的函數queueOrSendMessage是ActivityThread類的成員函數。

上面說到,這里的finished值為false,因此,queueOrSendMessage的第一個參數值為H.PAUSE_ACTIVITY,表示要暫停token所代表的Activity,即Launcher。

Step 14. ActivityThread.queueOrSendMessage

這個函數定義在frameworks/base/core/java/android/app/ActivityThread.java文件中:

    public final class ActivityThread {
	
	......

	private final void queueOrSendMessage(int what, Object obj, int arg1) {
		queueOrSendMessage(what, obj, arg1, 0);
	}

	private final void queueOrSendMessage(int what, Object obj, int arg1, int arg2) {
		synchronized (this) {
			......
			Message msg = Message.obtain();
			msg.what = what;
			msg.obj = obj;
			msg.arg1 = arg1;
			msg.arg2 = arg2;
			mH.sendMessage(msg);
		}
	}

	......

}
  
這里首先將相關信息組裝成一個msg,然后通過mH成員變量發送出去,mH的類型是H,繼承于Handler類,是ActivityThread的內部類,因此,這個消息最后由H.handleMessage來處理。

Step 15. H.handleMessage

這個函數定義在frameworks/base/core/java/android/app/ActivityThread.java文件中:

    public final class ActivityThread {
	
	......

	private final class H extends Handler {

		......

		public void handleMessage(Message msg) {
			......
			switch (msg.what) {
			
			......
			
			case PAUSE_ACTIVITY:
				handlePauseActivity((IBinder)msg.obj, false, msg.arg1 != 0, msg.arg2);
				maybeSnapshot();
				break;

			......

			}
		......

	}

	......

}
  

這里調用ActivityThread.handlePauseActivity進一步操作,msg.obj是一個ActivityRecord對象的引用,它代表的是Launcher這個Activity。
Step 16.ActivityThread.handlePauseActivity

這個函數定義在frameworks/base/core/java/android/app/ActivityThread.java文件中:

    public final class ActivityThread {
	
	......

	private final void handlePauseActivity(IBinder token, boolean finished,
			boolean userLeaving, int configChanges) {

		ActivityClientRecord r = mActivities.get(token);
		if (r != null) {
			//Slog.v(TAG, "userLeaving=" + userLeaving + " handling pause of " + r);
			if (userLeaving) {
				performUserLeavingActivity(r);
			}

			r.activity.mConfigChangeFlags |= configChanges;
			Bundle state = performPauseActivity(token, finished, true);

			// Make sure any pending writes are now committed.
			QueuedWork.waitToFinish();

			// Tell the activity manager we have paused.
			try {
				ActivityManagerNative.getDefault().activityPaused(token, state);
			} catch (RemoteException ex) {
			}
		}
	}

	......

}
  
函數首先將Binder引用token轉換成ActivityRecord的遠程接口ActivityClientRecord,然后做了三個事情:1. 如果userLeaving為true,則通過調用performUserLeavingActivity函數來調用Activity.onUserLeaveHint通知Activity,用戶要離開它了;2. 調用performPauseActivity函數來調用Activity.onPause函數,我們知道,在Activity的生命周期中,當它要讓位于其它的Activity時,系統就會調用它的onPause函數;3. 它通知ActivityManagerService,這個Activity已經進入Paused狀態了,ActivityManagerService現在可以完成未竟的事情,即啟動MainActivity了。

Step 17. ActivityManagerProxy.activityPaused

這個函數定義在frameworks/base/core/java/android/app/ActivityManagerNative.java文件中:

    class ActivityManagerProxy implements IActivityManager
{
	......

	public void activityPaused(IBinder token, Bundle state) throws RemoteException
	{
		Parcel data = Parcel.obtain();
		Parcel reply = Parcel.obtain();
		data.writeInterfaceToken(IActivityManager.descriptor);
		data.writeStrongBinder(token);
		data.writeBundle(state);
		mRemote.transact(ACTIVITY_PAUSED_TRANSACTION, data, reply, 0);
		reply.readException();
		data.recycle();
		reply.recycle();
	}

	......

}
  
這里通過Binder進程間通信機制就進入到ActivityManagerService.activityPaused函數中去了。

Step 18.ActivityManagerService.activityPaused

這個函數定義在frameworks/base/services/java/com/android/server/am/ActivityManagerService.java文件中:

    public final class ActivityManagerService extends ActivityManagerNative
			implements Watchdog.Monitor, BatteryStatsImpl.BatteryCallback {
	......

	public final void activityPaused(IBinder token, Bundle icicle) {
		
		......

		final long origId = Binder.clearCallingIdentity();
		mMainStack.activityPaused(token, icicle, false);
		
		......
	}

	......

}
  
這里,又再次進入到ActivityStack類中,執行activityPaused函數。

Step 19.ActivityStack.activityPaused

這個函數定義在frameworks/base/services/java/com/android/server/am/ActivityStack.java文件中:

    public class ActivityStack {

	......

	final void activityPaused(IBinder token, Bundle icicle, boolean timeout) {
		
		......

		ActivityRecord r = null;

		synchronized (mService) {
			int index = indexOfTokenLocked(token);
			if (index >= 0) {
				r = (ActivityRecord)mHistory.get(index);
				if (!timeout) {
					r.icicle = icicle;
					r.haveState = true;
				}
				mHandler.removeMessages(PAUSE_TIMEOUT_MSG, r);
				if (mPausingActivity == r) {
					r.state = ActivityState.PAUSED;
					completePauseLocked();
				} else {
					......
				}
			}
		}
	}

	......

}
  
這里通過參數token在mHistory列表中得到ActivityRecord,從上面我們知道,這個ActivityRecord代表的是Launcher這個Activity,而我們在Step 11中,把Launcher這個Activity的信息保存在mPausingActivity中,因此,這里mPausingActivity等于r,于是,執行completePauseLocked操作。

Step 20.ActivityStack.completePauseLocked

這個函數定義在frameworks/base/services/java/com/android/server/am/ActivityStack.java文件中:

    public class ActivityStack {

	......

	private final void completePauseLocked() {
		ActivityRecord prev = mPausingActivity;
		
		......

		if (prev != null) {

			......

			mPausingActivity = null;
		}

		if (!mService.mSleeping && !mService.mShuttingDown) {
			resumeTopActivityLocked(prev);
		} else {
			......
		}

		......
	}

	......

}
  
函數首先把mPausingActivity變量清空,因為現在不需要它了,然后調用resumeTopActivityLokced進一步操作,它傳入的參數即為代表Launcher這個Activity的ActivityRecord。

Step 21.ActivityStack.resumeTopActivityLokced
這個函數定義在frameworks/base/services/java/com/android/server/am/ActivityStack.java文件中:

    public class ActivityStack {

	......

	final boolean resumeTopActivityLocked(ActivityRecord prev) {
		......

		// Find the first activity that is not finishing.
		ActivityRecord next = topRunningActivityLocked(null);

		// Remember how we'll process this pause/resume situation, and ensure
		// that the state is reset however we wind up proceeding.
		final boolean userLeaving = mUserLeaving;
		mUserLeaving = false;

		......

		next.delayedResume = false;

		// If the top activity is the resumed one, nothing to do.
		if (mResumedActivity == next && next.state == ActivityState.RESUMED) {
			......
			return false;
		}

		// If we are sleeping, and there is no resumed activity, and the top
		// activity is paused, well that is the state we want.
		if ((mService.mSleeping || mService.mShuttingDown)
			&& mLastPausedActivity == next && next.state == ActivityState.PAUSED) {
			......
			return false;
		}

		.......


		// We need to start pausing the current activity so the top one
		// can be resumed...
		if (mResumedActivity != null) {
			......
			return true;
		}

		......


		if (next.app != null && next.app.thread != null) {
			......

		} else {
			......
			startSpecificActivityLocked(next, true, true);
		}

		return true;
	}


	......

}
  
通過上面的Step 9,我們知道,當前在堆棧頂端的Activity為我們即將要啟動的MainActivity,這里通過調用topRunningActivityLocked將它取回來,保存在next變量中。之前最后一個Resumed狀態的Activity,即Launcher,到了這里已經處于Paused狀態了,因此,mResumedActivity為null。最后一個處于Paused狀態的Activity為Launcher,因此,這里的mLastPausedActivity就為Launcher。前面我們為MainActivity創建了ActivityRecord后,它的app域一直保持為null。有了這些信息后,上面這段代碼就容易理解了,它最終調用startSpecificActivityLocked進行下一步操作。

Step 22. ActivityStack.startSpecificActivityLocked
這個函數定義在frameworks/base/services/java/com/android/server/am/ActivityStack.java文件中:

    public class ActivityStack {

	......

	private final void startSpecificActivityLocked(ActivityRecord r,
			boolean andResume, boolean checkConfig) {
		// Is this activity's application already running?
		ProcessRecord app = mService.getProcessRecordLocked(r.processName,
			r.info.applicationInfo.uid);

		......

		if (app != null && app.thread != null) {
			try {
				realStartActivityLocked(r, app, andResume, checkConfig);
				return;
			} catch (RemoteException e) {
				......
			}
		}

		mService.startProcessLocked(r.processName, r.info.applicationInfo, true, 0,
			"activity", r.intent.getComponent(), false);
	}


	......

}
  
注意,這里由于是第一次啟動應用程序的Activity,所以下面語句:

    ProcessRecord app = mService.getProcessRecordLocked(r.processName,
	r.info.applicationInfo.uid);
  
取回來的app為null。在Activity應用程序中的AndroidManifest.xml配置文件中,我們沒有指定Application標簽的process屬性,系統就會默認使用package的名稱,這里就是"shy.luo.activity"了。每一個應用程序都有自己的uid,因此,這里uid + process的組合就可以為每一個應用程序創建一個ProcessRecord。當然,我們可以配置兩個應用程序具有相同的uid和package,或者在AndroidManifest.xml配置文件的application標簽或者activity標簽中顯式指定相同的process屬性值,這樣,不同的應用程序也可以在同一個進程中啟動。

函數最終執行ActivityManagerService.startProcessLocked函數進行下一步操作。

Step 23.ActivityManagerService.startProcessLocked

這個函數定義在frameworks/base/services/java/com/android/server/am/ActivityManagerService.java文件中:

    public final class ActivityManagerService extends ActivityManagerNative
		implements Watchdog.Monitor, BatteryStatsImpl.BatteryCallback {

	......

	final ProcessRecord startProcessLocked(String processName,
			ApplicationInfo info, boolean knownToBeDead, int intentFlags,
			String hostingType, ComponentName hostingName, boolean allowWhileBooting) {

		ProcessRecord app = getProcessRecordLocked(processName, info.uid);
		
		......

		String hostingNameStr = hostingName != null
			? hostingName.flattenToShortString() : null;

		......

		if (app == null) {
			app = new ProcessRecordLocked(null, info, processName);
			mProcessNames.put(processName, info.uid, app);
		} else {
			// If this is a new package in the process, add the package to the list
			app.addPackage(info.packageName);
		}

		......

		startProcessLocked(app, hostingType, hostingNameStr);
		return (app.pid != 0) ? app : null;
	}

	......

}
  
這里再次檢查是否已經有以process + uid命名的進程存在,在我們這個情景中,返回值app為null,因此,后面會創建一個ProcessRecord,并存保存在成員變量mProcessNames中,最后,調用另一個startProcessLocked函數進一步操作:

    public final class ActivityManagerService extends ActivityManagerNative
		implements Watchdog.Monitor, BatteryStatsImpl.BatteryCallback {

	......

	private final void startProcessLocked(ProcessRecord app,
				String hostingType, String hostingNameStr) {

		......

		try {
			int uid = app.info.uid;
			int[] gids = null;
			try {
				gids = mContext.getPackageManager().getPackageGids(
					app.info.packageName);
			} catch (PackageManager.NameNotFoundException e) {
				......
			}
			
			......

			int debugFlags = 0;
			
			......
			
			int pid = Process.start("android.app.ActivityThread",
				mSimpleProcessManagement ? app.processName : null, uid, uid,
				gids, debugFlags, null);
			
			......

		} catch (RuntimeException e) {
			
			......

		}
	}

	......

}
  
這里主要是調用Process.start接口來創建一個新的進程,新的進程會導入android.app.ActivityThread類,并且執行它的main函數,這就是為什么我們前面說每一個應用程序都有一個ActivityThread實例來對應的原因。

Step 24. ActivityThread.main

這個函數定義在frameworks/base/core/java/android/app/ActivityThread.java文件中:

    public final class ActivityThread {

	......

	private final void attach(boolean system) {
		......

		mSystemThread = system;
		if (!system) {

			......

			IActivityManager mgr = ActivityManagerNative.getDefault();
			try {
				mgr.attachApplication(mAppThread);
			} catch (RemoteException ex) {
			}
		} else {

			......

		}
	}

	......

	public static final void main(String[] args) {
		
		.......

		ActivityThread thread = new ActivityThread();
		thread.attach(false);

		......

		Looper.loop();

		.......

		thread.detach();
		
		......
	}
}
  
這個函數在進程中創建一個ActivityThread實例,然后調用它的attach函數,接著就進入消息循環了,直到最后進程退出。

函數attach最終調用了ActivityManagerService的遠程接口ActivityManagerProxy的attachApplication函數,傳入的參數是mAppThread,這是一個ApplicationThread類型的Binder對象,它的作用是用來進行進程間通信的。

Step 25.ActivityManagerProxy.attachApplication

這個函數定義在frameworks/base/core/java/android/app/ActivityManagerNative.java文件中:

    class ActivityManagerProxy implements IActivityManager
{
	......

	public void attachApplication(IApplicationThread app) throws RemoteException
	{
		Parcel data = Parcel.obtain();
		Parcel reply = Parcel.obtain();
		data.writeInterfaceToken(IActivityManager.descriptor);
		data.writeStrongBinder(app.asBinder());
		mRemote.transact(ATTACH_APPLICATION_TRANSACTION, data, reply, 0);
		reply.readException();
		data.recycle();
		reply.recycle();
	}

	......

}
  
這里通過Binder驅動程序,最后進入ActivityManagerService的attachApplication函數中。

Step 26.ActivityManagerService.attachApplication

這個函數定義在frameworks/base/services/java/com/android/server/am/ActivityManagerService.java文件中:

    public final class ActivityManagerService extends ActivityManagerNative
		implements Watchdog.Monitor, BatteryStatsImpl.BatteryCallback {

	......

	public final void attachApplication(IApplicationThread thread) {
		synchronized (this) {
			int callingPid = Binder.getCallingPid();
			final long origId = Binder.clearCallingIdentity();
			attachApplicationLocked(thread, callingPid);
			Binder.restoreCallingIdentity(origId);
		}
	}

	......

}
  
這里將操作轉發給attachApplicationLocked函數。

Step 27.ActivityManagerService.attachApplicationLocked

這個函數定義在frameworks/base/services/java/com/android/server/am/ActivityManagerService.java文件中:

    public final class ActivityManagerService extends ActivityManagerNative
		implements Watchdog.Monitor, BatteryStatsImpl.BatteryCallback {

	......

	private final boolean attachApplicationLocked(IApplicationThread thread,
			int pid) {
		// Find the application record that is being attached...  either via
		// the pid if we are running in multiple processes, or just pull the
		// next app record if we are emulating process with anonymous threads.
		ProcessRecord app;
		if (pid != MY_PID && pid >= 0) {
			synchronized (mPidsSelfLocked) {
				app = mPidsSelfLocked.get(pid);
			}
		} else if (mStartingProcesses.size() > 0) {
			......
		} else {
			......
		}

		if (app == null) {
			......
			return false;
		}

		......

		String processName = app.processName;
		try {
			thread.asBinder().linkToDeath(new AppDeathRecipient(
				app, pid, thread), 0);
		} catch (RemoteException e) {
			......
			return false;
		}

		......

		app.thread = thread;
		app.curAdj = app.setAdj = -100;
		app.curSchedGroup = Process.THREAD_GROUP_DEFAULT;
		app.setSchedGroup = Process.THREAD_GROUP_BG_NONINTERACTIVE;
		app.forcingToForeground = null;
		app.foregroundServices = false;
		app.debugging = false;

		......

		boolean normalMode = mProcessesReady || isAllowedWhileBooting(app.info);

		......

		boolean badApp = false;
		boolean didSomething = false;

		// See if the top visible activity is waiting to run in this process...
		ActivityRecord hr = mMainStack.topRunningActivityLocked(null);
		if (hr != null && normalMode) {
			if (hr.app == null && app.info.uid == hr.info.applicationInfo.uid
				&& processName.equals(hr.processName)) {
					try {
						if (mMainStack.realStartActivityLocked(hr, app, true, true)) {
							didSomething = true;
						}
					} catch (Exception e) {
						......
					}
			} else {
				......
			}
		}

		......

		return true;
	}

	......

}
  

在前面的Step 23中,已經創建了一個ProcessRecord,這里首先通過pid將它取回來,放在app變量中,然后對app的其它成員進行初始化,最后調用mMainStack.realStartActivityLocked執行真正的Activity啟動操作。這里要啟動的Activity通過調用mMainStack.topRunningActivityLocked(null)從堆棧頂端取回來,這時候在堆棧頂端的Activity就是MainActivity了。

Step 28. ActivityStack.realStartActivityLocked

這個函數定義在frameworks/base/services/java/com/android/server/am/ActivityStack.java文件中:

    public class ActivityStack {

	......

	final boolean realStartActivityLocked(ActivityRecord r,
			ProcessRecord app, boolean andResume, boolean checkConfig)
			throws RemoteException {
		
		......

		r.app = app;

		......

		int idx = app.activities.indexOf(r);
		if (idx < 0) {
			app.activities.add(r);
		}
		
		......

		try {
			......

			List<ResultInfo> results = null;
			List<Intent> newIntents = null;
			if (andResume) {
				results = r.results;
				newIntents = r.newIntents;
			}
	
			......
			
			app.thread.scheduleLaunchActivity(new Intent(r.intent), r,
				System.identityHashCode(r),
				r.info, r.icicle, results, newIntents, !andResume,
				mService.isNextTransitionForward());

			......

		} catch (RemoteException e) {
			......
		}

		......

		return true;
	}

	......

}
  
這里最終通過app.thread進入到ApplicationThreadProxy的scheduleLaunchActivity函數中,注意,這里的第二個參數r,是一個ActivityRecord類型的Binder對象,用來作來這個Activity的token值。

Step 29.ApplicationThreadProxy.scheduleLaunchActivity
這個函數定義在frameworks/base/core/java/android/app/ApplicationThreadNative.java文件中:

    class ApplicationThreadProxy implements IApplicationThread {

	......

	public final void scheduleLaunchActivity(Intent intent, IBinder token, int ident,
			ActivityInfo info, Bundle state, List<ResultInfo> pendingResults,
			List<Intent> pendingNewIntents, boolean notResumed, boolean isForward)
			throws RemoteException {
		Parcel data = Parcel.obtain();
		data.writeInterfaceToken(IApplicationThread.descriptor);
		intent.writeToParcel(data, 0);
		data.writeStrongBinder(token);
		data.writeInt(ident);
		info.writeToParcel(data, 0);
		data.writeBundle(state);
		data.writeTypedList(pendingResults);
		data.writeTypedList(pendingNewIntents);
		data.writeInt(notResumed ? 1 : 0);
		data.writeInt(isForward ? 1 : 0);
		mRemote.transact(SCHEDULE_LAUNCH_ACTIVITY_TRANSACTION, data, null,
			IBinder.FLAG_ONEWAY);
		data.recycle();
	}

	......

}
  
這個函數最終通過Binder驅動程序進入到ApplicationThread的scheduleLaunchActivity函數中。

Step 30.ApplicationThread.scheduleLaunchActivity
這個函數定義在frameworks/base/core/java/android/app/ActivityThread.java文件中:

    public final class ActivityThread {

	......

	private final class ApplicationThread extends ApplicationThreadNative {

		......

		// we use token to identify this activity without having to send the
		// activity itself back to the activity manager. (matters more with ipc)
		public final void scheduleLaunchActivity(Intent intent, IBinder token, int ident,
				ActivityInfo info, Bundle state, List<ResultInfo> pendingResults,
				List<Intent> pendingNewIntents, boolean notResumed, boolean isForward) {
			ActivityClientRecord r = new ActivityClientRecord();

			r.token = token;
			r.ident = ident;
			r.intent = intent;
			r.activityInfo = info;
			r.state = state;

			r.pendingResults = pendingResults;
			r.pendingIntents = pendingNewIntents;

			r.startsNotResumed = notResumed;
			r.isForward = isForward;

			queueOrSendMessage(H.LAUNCH_ACTIVITY, r);
		}

		......

	}

	......
}
  
函數首先創建一個ActivityClientRecord實例,并且初始化它的成員變量,然后調用ActivityThread類的queueOrSendMessage函數進一步處理。

Step 31.ActivityThread.queueOrSendMessage
這個函數定義在frameworks/base/core/java/android/app/ActivityThread.java文件中:

    public final class ActivityThread {

	......

	private final class ApplicationThread extends ApplicationThreadNative {

		......

		// if the thread hasn't started yet, we don't have the handler, so just
		// save the messages until we're ready.
		private final void queueOrSendMessage(int what, Object obj) {
			queueOrSendMessage(what, obj, 0, 0);
		}

		......

		private final void queueOrSendMessage(int what, Object obj, int arg1, int arg2) {
			synchronized (this) {
				......
				Message msg = Message.obtain();
				msg.what = what;
				msg.obj = obj;
				msg.arg1 = arg1;
				msg.arg2 = arg2;
				mH.sendMessage(msg);
			}
		}

		......

	}

	......
}
  
函數把消息內容放在msg中,然后通過mH把消息分發出去,這里的成員變量mH我們在前面已經見過,消息分發出去后,最后會調用H類的handleMessage函數。

Step 32. H.handleMessage

這個函數定義在frameworks/base/core/java/android/app/ActivityThread.java文件中:

    public final class ActivityThread {

	......

	private final class H extends Handler {

		......

		public void handleMessage(Message msg) {
			......
			switch (msg.what) {
			case LAUNCH_ACTIVITY: {
				ActivityClientRecord r = (ActivityClientRecord)msg.obj;

				r.packageInfo = getPackageInfoNoCheck(
					r.activityInfo.applicationInfo);
				handleLaunchActivity(r, null);
			} break;
			......
			}

		......

	}

	......
}
  
這里最后調用ActivityThread類的handleLaunchActivity函數進一步處理。

Step 33.ActivityThread.handleLaunchActivity

這個函數定義在frameworks/base/core/java/android/app/ActivityThread.java文件中:

    public final class ActivityThread {

	......

	private final void handleLaunchActivity(ActivityClientRecord r, Intent customIntent) {
		......

		Activity a = performLaunchActivity(r, customIntent);

		if (a != null) {
			r.createdConfig = new Configuration(mConfiguration);
			Bundle oldState = r.state;
			handleResumeActivity(r.token, false, r.isForward);

			......
		} else {
			......
		}
	}

	......
}
  
這里首先調用performLaunchActivity函數來加載這個Activity類,即shy.luo.activity.MainActivity,然后調用它的onCreate函數,最后回到handleLaunchActivity函數時,再調用handleResumeActivity函數來使這個Activity進入Resumed狀態,即會調用這個Activity的onResume函數,這是遵循Activity的生命周期的。

Step 34.ActivityThread.performLaunchActivity
這個函數定義在frameworks/base/core/java/android/app/ActivityThread.java文件中:

    public final class ActivityThread {

	......

	private final Activity performLaunchActivity(ActivityClientRecord r, Intent customIntent) {
		
		ActivityInfo aInfo = r.activityInfo;
		if (r.packageInfo == null) {
			r.packageInfo = getPackageInfo(aInfo.applicationInfo,
				Context.CONTEXT_INCLUDE_CODE);
		}

		ComponentName component = r.intent.getComponent();
		if (component == null) {
			component = r.intent.resolveActivity(
				mInitialApplication.getPackageManager());
			r.intent.setComponent(component);
		}

		if (r.activityInfo.targetActivity != null) {
			component = new ComponentName(r.activityInfo.packageName,
				r.activityInfo.targetActivity);
		}

		Activity activity = null;
		try {
			java.lang.ClassLoader cl = r.packageInfo.getClassLoader();
			activity = mInstrumentation.newActivity(
				cl, component.getClassName(), r.intent);
			r.intent.setExtrasClassLoader(cl);
			if (r.state != null) {
				r.state.setClassLoader(cl);
			}
		} catch (Exception e) {
			......
		}

		try {
			Application app = r.packageInfo.makeApplication(false, mInstrumentation);

			......

			if (activity != null) {
				ContextImpl appContext = new ContextImpl();
				appContext.init(r.packageInfo, r.token, this);
				appContext.setOuterContext(activity);
				CharSequence title = r.activityInfo.loadLabel(appContext.getPackageManager());
				Configuration config = new Configuration(mConfiguration);
				......
				activity.attach(appContext, this, getInstrumentation(), r.token,
					r.ident, app, r.intent, r.activityInfo, title, r.parent,
					r.embeddedID, r.lastNonConfigurationInstance,
					r.lastNonConfigurationChildInstances, config);

				if (customIntent != null) {
					activity.mIntent = customIntent;
				}
				r.lastNonConfigurationInstance = null;
				r.lastNonConfigurationChildInstances = null;
				activity.mStartedActivity = false;
				int theme = r.activityInfo.getThemeResource();
				if (theme != 0) {
					activity.setTheme(theme);
				}

				activity.mCalled = false;
				mInstrumentation.callActivityOnCreate(activity, r.state);
				......
				r.activity = activity;
				r.stopped = true;
				if (!r.activity.mFinished) {
					activity.performStart();
					r.stopped = false;
				}
				if (!r.activity.mFinished) {
					if (r.state != null) {
						mInstrumentation.callActivityOnRestoreInstanceState(activity, r.state);
					}
				}
				if (!r.activity.mFinished) {
					activity.mCalled = false;
					mInstrumentation.callActivityOnPostCreate(activity, r.state);
					if (!activity.mCalled) {
						throw new SuperNotCalledException(
							"Activity " + r.intent.getComponent().toShortString() +
							" did not call through to super.onPostCreate()");
					}
				}
			}
			r.paused = true;

			mActivities.put(r.token, r);

		} catch (SuperNotCalledException e) {
			......

		} catch (Exception e) {
			......
		}

		return activity;
	}

	......
}
  

函數前面是收集要啟動的Activity的相關信息,主要package和component信息:

       ActivityInfo aInfo = r.activityInfo;
   if (r.packageInfo == null) {
        r.packageInfo = getPackageInfo(aInfo.applicationInfo,
                Context.CONTEXT_INCLUDE_CODE);
   }

   ComponentName component = r.intent.getComponent();
   if (component == null) {
       component = r.intent.resolveActivity(
           mInitialApplication.getPackageManager());
       r.intent.setComponent(component);
   }

   if (r.activityInfo.targetActivity != null) {
       component = new ComponentName(r.activityInfo.packageName,
               r.activityInfo.targetActivity);
   }
  
然后通過ClassLoader將shy.luo.activity.MainActivity類加載進來:

       Activity activity = null;
   try {
	java.lang.ClassLoader cl = r.packageInfo.getClassLoader();
	activity = mInstrumentation.newActivity(
		cl, component.getClassName(), r.intent);
	r.intent.setExtrasClassLoader(cl);
	if (r.state != null) {
		r.state.setClassLoader(cl);
	}
   } catch (Exception e) {
	......
   }
  
接下來是創建Application對象,這是根據AndroidManifest.xml配置文件中的Application標簽的信息來創建的:

       Application app = r.packageInfo.makeApplication(false, mInstrumentation);
  
后面的代碼主要創建Activity的上下文信息,并通過attach方法將這些上下文信息設置到MainActivity中去:

       activity.attach(appContext, this, getInstrumentation(), r.token,
	r.ident, app, r.intent, r.activityInfo, title, r.parent,
	r.embeddedID, r.lastNonConfigurationInstance,
	r.lastNonConfigurationChildInstances, config);
  
最后還要調用MainActivity的onCreate函數:

       mInstrumentation.callActivityOnCreate(activity, r.state);
  
這里不是直接調用MainActivity的onCreate函數,而是通過mInstrumentation的callActivityOnCreate函數來間接調用,前面我們說過,mInstrumentation在這里的作用是監控Activity與系統的交互操作,相當于是系統運行日志。

Step 35. MainActivity.onCreate

這個函數定義在packages/experimental/Activity/src/shy/luo/activity/MainActivity.java文件中,這是我們自定義的app工程文件:

    public class MainActivity extends Activity  implements OnClickListener {
	
	......

	@Override
	public void onCreate(Bundle savedInstanceState) {
		......

		Log.i(LOG_TAG, "Main Activity Created.");
	}

	......

}
  
這樣,MainActivity就啟動起來了,整個應用程序也啟動起來了。

整個應用程序的啟動過程要執行很多步驟,但是整體來看,主要分為以下五個階段:

一. Step1 - Step 11:Launcher通過Binder進程間通信機制通知ActivityManagerService,它要啟動一個Activity;

二. Step 12 - Step 16:ActivityManagerService通過Binder進程間通信機制通知Launcher進入Paused狀態;

三. Step 17 - Step 24:Launcher通過Binder進程間通信機制通知ActivityManagerService,它已經準備就緒進入Paused狀態,于是ActivityManagerService就創建一個新的進程,用來啟動一個ActivityThread實例,即將要啟動的Activity就是在這個ActivityThread實例中運行;

四. Step 25 - Step 27:ActivityThread通過Binder進程間通信機制將一個ApplicationThread類型的Binder對象傳遞給ActivityManagerService,以便以后ActivityManagerService能夠通過這個Binder對象和它進行通信;

五. Step 28 - Step 35:ActivityManagerService通過Binder進程間通信機制通知ActivityThread,現在一切準備就緒,它可以真正執行Activity的啟動操作了。

這里不少地方涉及到了Binder進程間通信機制,相關資料請參考 Android進程間通信(IPC)機制Binder簡要介紹和學習計劃 一文。

這樣,應用程序的啟動過程就介紹完了,它實質上是啟動應用程序的默認Activity,在下一篇文章中,我們將介紹在應用程序內部啟動另一個Activity的過程,即新的Activity與啟動它的Activity將會在同一個進程(Process)和任務(Task)運行,敬請關注。

老羅的新浪微博: http://weibo.com/shengyangluo ,歡迎關注!

Android應用程序啟動過程源代碼分析


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦?。。?/p>

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 在线观看视频国产 | 小说区 综合区 首页 | 18禁勿入午夜网站入口 | 国产婷婷成人久久av免费高清 | 亚洲理论在线 | 国产人妻精品一区二区三区不卡 | 在线免费观看你懂的 | 无码色偷偷亚洲国内自拍 | 欧美激情小说视频 | 色婷婷香蕉在线一区 | 日韩精品久久久久久久的张开腿让 | 男人女人午夜视频免费 | 老汉玩弄少妇毛片 | 国产桃色无码视频在线观看 | 在线综合亚洲欧洲综合网站 | 男女羞羞视频免费观看 | 激情图片网站 | 欧美精品一区二区a片免费 欧美黑人性生活视频 | 中文字幕日韩一区二区三区 | 丁香婷婷九月 | 久久网免费视频 | 国产精品日本一区二区不卡视频 | 99久久99久久久精品齐齐 | 国产片在线天堂av | 国产性xxxx18免费观看视频 | 丰满少妇高潮叫久久国产 | 亚洲欧美韩国 | 久久精品国产欧美日韩99热 | 91精品视频网| 日韩av免费在线看 | 青青草狠狠爱 | 又粗又色又爽一区二区三区 | bt天堂av| 中文字幕亚洲乱码熟女在线 | 日一区二区 | aaa午夜级特黄日本大片 | 久久久久成人精品 | 99热热久久这里只有精品68 | 国产精品偷伦视频观看免费 | 自拍偷拍亚洲欧美 | 欧美精品 在线观看 | 丝袜脚av | 成人深夜福利视频 | 四虎8848 | 又大又粗欧美黑人aaaaa片 | 人妻熟妇乱又伦精品视频 | 亚洲成a人片在线观看天堂无码 | 婷婷色香五月综合缴缴情香蕉 | 国产伦乱视频 | 少妇av影院 | 又黄又爽又猛1000部a片 | 52avaⅴ我爱haose免费视频 | 绯色av蜜臀vs少妇 | 成人免费无码不卡毛片视频 | 中文字幕高清免费日韩视频在线 | 久久综合亚洲鲁鲁五月天 | 久久久噜噜噜久久久精品 | 成在人线av无码免观看麻豆 | 2020最新国产情侣网站 | 九九视频一区 | 天堂69堂在线精品视频软件 | 国产亚洲曝欧美不卡精品 | 欧美在线视频你懂的 | 欧美日韩一区二区三区四区五区 | 精品国产一区二区在线 | 女人19水真多免费毛片 | 国产成人免费永久在线平台 | 狠狠色丁香婷婷综合视频 | 亚洲第一区欧美国产综合 | 亚洲精品一二三区 | 国产午夜在线观看 | 五月婷婷激情综合 | 亚洲人成未满十八禁网站 | 19+韩国美女vip福利 | 狠狠色婷婷丁香综合久久韩国电影 | 插少妇 | 日韩欧美国产aⅴ另类 | 亚洲成在人线视av | 特黄熟妇丰满人妻无码 | 天天操天天透 | 黄色综合网| 国产又粗又猛又大爽视频 | 98国产精品午夜免费福利视频 | 亚洲妇熟xx妇色黄蜜桃 | 夜夜爽狠狠天天婷婷五月 | 亚洲精品一区二区三区在线观看 | 九九啪啪| 91中文字幕在线观看 | 91啦丨九色丨刺激 | 欧美jizzhd精品欧美巨大免费 | 久久午夜无码鲁丝片直播午夜精品 | 猫咪av最新网址 | 国产视频线观看永久免费 | 干美女av| 无码无遮挡又大又爽又黄的视频 | 蜜臀av免费一区二区三区久久乐 | 青青在线视频人视频在线 | 国产偷人伦激情在线观看 | 日本精品网站 | 欧美在线性爱视频 | 四虎成人精品在永久免费 | 日韩亚洲欧美一区二区 | 欧美日韩国产在线人成 | 久久久久久久久久久综合日本 | 国产福利毛片 | 91一区二区国产精华液 | 精品一区二区无码av | 91九色蝌蚪成人 | 亚洲腹肌男啪啪网站男同 | av日韩免费在线观看 | 成人h视频 | 色综合a怡红院怡红院 | 欧美美女一区 | 国产 日韩 欧美 自拍 | 手机看片福利一区二区三区 | 夜鲁鲁鲁夜夜综合视频 | 色综合a怡红院怡红院 | 中文字幕人成无码人妻 | 国产亚洲精品无码专区 | 国产91影院 | 国产精品日本 | 午夜日本福利 | 成年人免费黄色片 | 国产精品女人高潮毛片圣水 | 国产精品视频www | 国产禁女女网站免费看 | 国产亚洲精品久久久久久久久动漫 | 日韩在线视频在线观看 | 久久综合老色鬼网站 | 精品国产综合 | 黄色aa视频| 久久人人爽人人爽久久小说 | 亚洲成a人片在线观看无码3d | 精品蜜桃av | 四川丰满少妇被弄到高潮 | 欧美丰满高潮xxxx喷水动漫 | 国产在线观看你懂得 | 人摸人人人澡人人超碰手机版 | 在线播放国产麻豆va剧情 | 农村+肉+屁股+粗+大+岳小说 | 成人免费大片在线观看 | 国产亚洲精品久久久久久 | 色先锋资源久久综合5566 | 亚洲综合无码一区二区三区不卡 | 国产熟妇另类久久久久婷婷 | 国产初高中生视频在线观看 | www.国产免费拍拍拍影片软件 | 天天拍夜夜操 | 国产97超碰| 酒店偷拍毛片高潮 | 国产精品免费大片 | 国产va免费精品高清在线观看 | 日本精品一区二区三区视频 | 久天啪天天久久99久孕妇 | 欧美俄罗斯乱妇 | 爱情岛论坛亚洲品质永久入口 | 9色国产深夜内射 | 一级国产国产一级 | 理论片高清免费理论片毛毛片 | 中文字幕丰满乱孑伦无码专区 | av网站免费线看精品 | 91久久99久91天天拍拍 | 亚洲日韩穿丝袜在线推荐 | 成在人线aⅴ免费视频 | 少妇一级淫片免费放香蕉 | 久久青青草原国产最新片完整 | 国产人成免费爽爽爽视频 | 国产精品成人无码久久久 | a天堂中文网 | www.狠狠撸.com | 99国产精品自拍 | 亚洲国产乱 | 国产精品狼人久久久久影院 | 中文字幕五区 | 精品人妻无码视频中文字幕一区二区三区 | www日本com| 成人亚欧欧美激情在线观看 | av中文字幕免费在线观看 | 亚洲美女又黄又爽在线观看 | 少妇激情一区二区三区视频小说 | 欧美jizzhd精品欧美巨大免费 | 久久精品国产久精国产69 | 毛多水多www偷窥小便 | 五月天激情视频 | 黄色成人免费视频 | 国产99久久亚洲综合精品西瓜tv | 五月天综合激情网 | 国产精品爽爽va吃奶在线观看 | 国产成人亚洲精品狼色在线 | av一二 | 日韩精品一区二区三区老鸭窝 | 国产成人精品久久久 | 69亚洲精品久久久蜜桃小说 | 日本一本久草 | 中文综合在线观 | 国产精品久久久久久久久动漫 | 人人舔人人干 | 永久免费的无码中文字幕 | 好大好湿好硬顶到了好爽视频 | 亚洲综合色婷婷七月丁香 | 成人片国产精品亚洲 | 国产日产精品_国产精品毛片 | 福利视频在线免费观看 | 中文字幕永久 | 欧美 另类 交 | 日韩欧美在线观看一区二区 | 一二三四社区在线中文视频 | 人妻夜夜爽天天爽一区 | 国产av精国产传媒 | 影音先锋久久久久av综合网成人 | 欧美日韩精品二区 | 97国产人妻人人爽人人澡 | 欧美成人不卡 | 国产69精品久久 | 久久久久久9| 思思99热久久精品在线6 | 国产精品久久久久久久久婷婷 | 夜夜摸,狠狠添,日日添,高潮出水 | 日韩欧美午夜 | 亚洲尹人 | 国产精东天美av影业传媒 | 手机在线免费av | 亚洲蜜桃av一区二区 | 免费av一级片 | 久久成人a| 亚洲成人高清在线 | 亚洲少妇第一页 | 人禽伦免费交视频播放 | 最新中文字幕av | 99re在线观看 | 美女福利一区 | 欧美日韩生活片 | 特黄aaaaaaaaa毛片免 | 北条麻妃一区二区在线观看视频 | 在线 色 | 色天天综合网 | 亚洲午夜精品a片久久www慈禧 | 精品一卡2卡3卡4卡新区在线 | 成人免费视屏 | 精品少妇人妻av无码久久 | 国产99久 | 国产美女被遭高潮免费视频 | 成年网站在线观看 | 欧美精品在欧美一区二区少妇 | 欧美性站| 欧美性久久久久 | 亚洲v国产v | 欧美三级日本 | 免费又黄又爽又色的视频 | 少妇扒开双腿让我看个够 | 欧美一区二区三区在线看 | 欧美激情在线免费 | 全球av集中精品导航福利 | 成人乱人乱一区二区三区 | 又黄又爽的60分钟视频 | 久草青青在线 | 韩国主播bj大尺度福利视频 | 成人国产福利a无限看 | 在线免费观看日本 | 亚洲人成电影网站 久久影视 | 天堂视频在线 | 丁香花在线免费高清观看 | 4hu44四虎www在线影院麻豆 | 91毛片网 | 欧美一区二区鲁丝袜片 | 99久久精品免费 | 久久电影网午夜鲁丝片免费 | 精品无码国产不卡在线观看 | 国内偷自拍性夫妇 | 亚洲制服另类无码专区 | 中文字幕第一页在线 | 成人自拍视频在线观看 | 久久香蕉精品 | 久久这里有精品视频 | 欧美阿v天堂视频在99线 | 久热精品视频在线观看 | 久久久久久av无码免费看大片 | 天天爽夜夜爽精品视频婷婷 | 亚洲旡码a∨一区二区三区 国产视频123 | 久久熟妇人妻午夜寂寞影院 | 狠狠色狠狠色综合日日五 | 九色 porny 蝌蚪 | 日韩在线综合视频 | 亚洲精品国产一区二区的区别 | 日韩极品在线 | jizz美女| 亚洲日韩一区精品射精 | 精品一区二区三区在线播放视频 | 日韩少妇内射免费播放18禁裸乳 | 中文字幕亚洲男人的天堂网络 | 亚洲免费一级 | 久久国产一区二区 | 一级一级国产片 | 一级片国产| 国产3页| 免费裸体无遮挡黄网站免费看 | 国产成人亚洲影院在线观看 | 灵媒泰国恐怖片在线观看国语翻译 | 亚洲午夜久久久影院伊人 | 182午夜视频| 又粗又长av | 亚洲色大成网站www久久九九 | 欧美日韩系列 | 四虎视频国产精品免费 | 国产精品va无码免费麻豆 | 中文字幕制服丝袜一区二区三区 | 夜夜爱夜鲁夜鲁很鲁 | 双腿张开被9个黑人调教影片 | 日本丰满hd娇小 | 偷自拍亚洲视频在线观看99 | 97久久精品 | 黄色在线免费观看网站 | 91完整视频 | 国产无遮挡网站 | 日本黄色美女网站 | 亚洲三级在线播放 | 天天爽天天干 | 少妇精品免费视频欧美 | 久久不见久久见www免费 | 久久久久久中文字幕 | 免费观看一区二区三区视频 | 国产老太睡小伙子视频 | 亚洲四区在线 | 亚洲国产极品 | 免费久久久久久 | 都市激情 小说 | 成人h动漫精品一区二区无码 | 国内三级在线 | 国产在线无码不卡播放 | 91欧美一区二区三区 | 国产亚洲精品久久无码98 | 亚洲日韩av一区二区三区四区 | 国产又黄又爽又色的免费视频白丝 | 女女互揉吃奶揉到高潮视频 | 91在线看视频 | 蜜臀久久99精品久久久无需会员 | 91看国产| 国产suv精二区一片 国产成人黄色av | 一本一道vs无码中文字幕 | 日本天堂网站 | 午夜福利视频1692 | 国产情侣激情在线视频 | 久久久精品人妻一区二区三区四 | www.久久精品.com | 亚洲毛片一区二区 | 亚洲伦无码中文字幕另类 | 天堂资源在线视频 | 国产一二三av | 黄色aa视频 | 亚洲一区二区精品 | 学生妹无套内射正在播放 | 国产欧美久久久精品影院 | 日韩欧美高清dvd碟片 | 久久密av | 一区二区在线欧美日韩中文 | 九一色视频 | 亚洲一区日韩精品 | 人人爽爽人人 | 午夜免费影院 | 99精品产国品一二三产区 | 欧亚av在线 | 欧美成人猛交69 | 97se亚洲国产综合自在线不卡 | 亚洲欧美精品一中文字幕 | 热热热热色 | 日韩久久无码免费毛片软件 | 国产精品久久久久乳精品爆 | 国产α片免费观看在线人 | 中文字幕日韩精品亚洲七区 | 婷婷亚洲精品 | 日韩国产一区二区三区 | 97高清国语自产拍 | av日韩在线免费观看 | 8av国产精品爽爽ⅴa在线观看 | 国产噜噜噜噜噜久久久久久久久 | 三级色网| 亚洲色五月 | 国产免费久久精品99re丫丫一 | 亚洲天天影视 | 日韩美女视频在线观看 | 性瑜伽xxxtⅴ | 国产精品一区二区三区四 | 天堂av网手机版 | 99精品国产一区二区 | 九色 porny 蝌蚪 | 91视频中文字幕 | 热久久这里只有精品 | 性色av无码久久一区二区三区 | 成人做爰69片免费看 | 亚洲狠狠爱| 国产精品免费一区二区 | 美女黄网站18禁免费看 | 视频一区二区三区中文字幕 | 乱子伦农村xxxxbbb | 国产电影无码午夜在线播放 | 人妻熟女一区 | www国产精品内射 | 91成人福利视频 | 色免费在线观看 | 国产亚洲曝欧美曝妖精品 | 成人一级片网站 | 巨胸喷奶水视频www 色综合天天综合网国产 | 曰本无码超乳爆乳中文字幕 | 亚州少妇无套内射激情视频 | 国产传媒麻豆剧精品av | 欧美激情性xxxxx高清真 | 国产+高潮+白浆+无码 | 国产成人精品a∨一区二区 午夜精品成人一区二区 | 狠狠干一区二区 | 国产日韩欧美在线播放 | 老鸭窝久久 | 国产毛片精品一区二区 | 91黄色免费 | 日韩观看 | 精品国产福利在线视频 | 天天澡天天揉揉av在线 | 国产免费mv大全视频网站 | 久草不卡| 亚洲综合精品第一页 | 免费一级淫片红桃视频 | 日本色多多 | 亚洲亚洲人成综合丝袜图片 | 精品久久久久久亚洲 | 九九热久久免费视频 | 日韩人妻熟女毛片在线看 | 国产熟人av一二三区 | 国产欧美在线播放 | 西野翔之公侵犯中文字幕 | 亚洲乱亚洲乱妇在线观看 | 美女av毛片 | 亚洲欲色欲色xxxxx在线 | 日本视频黄色 | 日本一级中文字幕久久久久久 | 久久精品国产福利国产秒拍 | 深夜福利在线免费观看 | 亚洲狠狠成人网 | 亚洲精品综合一区二区 | 精品+无码+在线观看 | 超碰97人人做人人爱2020 | 国产69精品久久 | 国产线精品视频在线观看网 | 欧美一级片免费播放 | 天天射夜夜爽 | aⅴ免费视频在线观看 | 日韩无砖专区2021嘟嘟网 | 最新精品国偷自产在线老年人 | аⅴ资源中文在线天堂 | 性色av无码久久一区二区三区 | 亚洲国产果冻传媒av在线观看 | 免费看国产成年无码av片 | 国内丰满少妇猛烈精品播 | 亚洲综合另类小说色区大陆 | 内射人妻无码色ab麻豆 | 黑人巨大av | 亚洲色成人网站永久 | 麻豆国产91在线播放 | 天天摸日日摸爽爽狠狠 | 亚洲精品丝袜一区二区三区 | 美女胸18大禁视频网站 | 天堂网av2014 | 久久婷婷国产综合一区二区 | 少妇日韩 | 唐人社导航福利精品 | 大象蕉伊人| 免费人成网站在线观看不卡 | 欧美福利网 | 国产精品乱码久久久久久小说 | 国产欧美一区二区在线 | 国产亚洲精品久久久久久大师 | 久久久久青草大香综合精品 | 国产精品一区二区毛片 | 蜜臀av午夜精品 | 啪视频在线 | 人妻三级日本香港三级极 | 欧美第一黄网免费网站 | 久久人人爽 | 欧洲精品99毛片免费高清观看 | 国产又粗又猛又爽又黄的视频免费 | 日本少妇自慰免费完整版 | 成人婷婷网色偷偷亚洲男人的天堂 | 蜜臀久久精品久久久久久酒店 | 国产91成人欧美精品另类动态 | av自拍网| 日韩精品中文字幕在线 | 夜夜欢性恔真人免费视频 | 国产美女av| 亚洲综合久 | 天堂在线资源8 | 午夜免费观看 | 玖玖在线资源 | 久久精品国产精品国产一区 | 在线播放日本 | 国产区又黄又硬高潮的视频 | 91手机在线观看 | 排球少年第四季在线看樱花 | 国产又爽又大又黄a片另类软件 | 午夜精品久久久久久久久久久久 | 美女胸又黄又水 | а√中文在线资源库 | 黄色欧美视频 | 91丨九色丨海角社区 | 91视频观看| 国产午夜高潮熟女精品av | 成视人a免费观看 视频 | 日韩视频中文字幕精品偷拍 | 可以在线看的av网站 | 日韩a√ | 性欧美精品中出 | 国产精品久久久精品 | 爱情岛论坛亚洲品质永久入口 | 欧美一区二区三区艳史 | 日韩国产欧美视频 | 日韩特黄特色大片免费视频 | 亚洲精品www久久久久久软件 | 国产精品一国产精品一k频道 | 好屌爽在线视频 | 日本片网站 | 国产精欧美一区二区三区久久 | 色婷婷精品大在线视频 | 最新中文字幕免费视频 | 国产69精品久久久久孕妇大杂乱 | 中文字幕日本一区 | 91久久精品一区二区三区 | 国产亚洲欧美日韩精品一区二区三区 | 中文字幕av伊人av无码av狼人 | 欧美生活一级片 | 中文字幕日日 | 亚洲日韩激情无码一区 | 麻豆精品一区二区 | 狠狠做五月深爱婷婷 | 丁香五月网久久综合 | 亚洲va韩国va欧美va精品 | 国产在线精品一区二区三区直播 | 亚洲视频色图 | 两性激情视频 | 91丨九色丨蝌蚪丨少妇在线观看 | 久热网站 | 亚洲永久精品www | 青青久视频 | 国产成人在线一区二区 | 美国色综合 | 永久免费观看的毛片手机视频 | 中文字幕亚洲在线观看 | 日本一区二区更新不卡 | 八个少妇沟厕小便漂亮各种大屁股 | 囯产精品久久久久久久久久妞妞 | 亚洲国产成人高清在线观看 | 色爱av综合网站 | 国产九九精品 | 日本被黑人强伦姧人妻完整版 | 在线黑人抽搐潮喷 | 国产毛片久久久久久国产毛片 | 97人视频国产在线观看 | av久久爽爽爽一夜又一夜 | 精品街拍一区二区 | 3d动漫精品啪啪一区二区免费 | 噜噜高清欧美内射短视频 | 久久婷婷五月综合97色一本一本 | 国产专区欧美专区 | 国产精品亚洲精品日韩已满十八小 | 91九色porny蝌蚪 | 国产午夜精品一区二区三区软件 | 日本一级淫片 | 国内熟妇人妻色无码视频在线 | 国产精品不卡在线 | 96成人爽a毛片一区二区 | 色综久久综合桃花网国产精品 | 一区二区精品在线观看 | 无码人妻一区二区三区免费 | 中文在线а√在线8 | 精品卡1卡2卡三卡免费网站 | 一边捏奶头一边高潮视频 | 热热涩热热狠狠色香蕉综合 | 人人干人人干人人干 | 黄色三级毛片 | 国产色婷婷精品综合在线手机播放 | 日韩三级免费 | 国产一区二区三区自产 | 久久中文字幕伊人小说小说 | 国产69精品久久 | 国产乱码精品1区2区3区 | 18禁黄无遮挡网站免费 | 久久九九视频 | 五月婷婷激情综合网 | 国产视频二区 | 亚洲色欲av无码成人专区 | 亚洲一区二区三区无码影院 | 最新色国产精品精品视频 | 九九99热久久精品在线6 | 一区二区三区鲁丝不卡麻豆 | 免费看成人毛片无码视频 | 婷婷婷色 | 国产成人午夜福利在线观看视频 | 色婷婷综合久久久久中文字幕 | 四川丰满少妇毛片新婚之夜 | 久久五| 欧美日韩在线视频免费观看 | 国产极品女主播国产区 | 国产精品午夜片在线观看 | 黑人大战日本人妻嗷嗷叫 | 精品国产人妻一区二区三区免费 | 狠狠操伊人 | 久久精品国产网红主播 | 99视频网站| 欧洲无线码一二三四区 | 超碰在线免费av | 亚洲自拍99| 久久久综综合色一本伊人 | 久久婷婷激情综合色综合俺也去 | 久久综合a∨色老头免费观看 | 久久国产精品人妻丝袜 | 久久久久久亚洲国产精品 | 黄在线免费观看 | 国产末成年av在线播放 | 国产精品边做奶水狂喷无码 | 久久成人视屏 | 51真实女性私密spa按摩偷拍 | 亚洲aaaaaa特级 | 国产一区二区三区四区在线观看 | 日韩中文字幕在线观看视频 | 伊人亚洲综合网色av另类 | 视频精品一区 | 日麻批免费视频 | 亚洲日本 | 亚洲高清二区 | 三年中国中文在线观看视频 | 亚洲a∨大乳天堂在线 | 国产男女视频在线观看 | 国产一精品一av一免费 | 亚洲国产欧美另类 | 97久久精品亚洲中文字幕无码 | 91挑色| 国产91在线播放 | 亚洲熟妇无码爱v在线观看 久久久av男人的天堂 | 91亚洲成a人片在线观看www | 人妻忍着娇喘被中进中出视频 | 中文字幕欧美激情 | 国产伊人久久 | 中文字幕最新在线 | 国产一区二区在线免费观看 | 老色鬼在线播放精品视频 | 天天综合亚洲综合网天天αⅴ | 美女久久久 | 人妻夜夜爽天天爽欧美色院 | 国产精品乱码一区二区 | 亚洲人成网www男同 亚洲最新无码中文字幕久久 | 国产精品久久久久久久久动漫 | 亚洲精品国产综合99久久一区 | 人人超碰人人爱超碰国产 | 91精品亚洲影视在线观看 | 国产va在线 | 无码av最新清无码专区吞精 | 精品久久综合1区2区3区激情 | 久久婷五月 | 九哥草逼网 | 欧美视频一二区 | 特级做a爰片毛片免费69 | 日韩视频在线播放 | 菲律宾av| 女女综合网 | 亚洲国产一区二区三区亚瑟 | hd最新国产人妖ts视频 | 成人日皮视频 | 蜜臀av国内精品久久久夜夜蜜臀 | 在线播放国产麻豆va剧情 | 黑人上司好猛我好爽中文字幕 | 婷婷丁香狼人久久大香线蕉 | 亚洲精品一区二区久 | 成人无码a区在线观看视频 国产偷自视频区视频 | 久久久久久人妻毛片a片 | 欧美91| 国产成人剧情av麻豆果冻 | 97一区二区三区 | 中文日韩在线视频 | av在线视屏 | 欧美国产日韩a欧美在线视频 | 国产肥老妇视频 | 亚洲色成人www永久网站 | 欧美无砖专区免费 | 黄色在线a | 精品二| 国产精品视频啪啪 | 欧美综合视频在线观看 | 在线天堂www在线资源下载 | 狠狠久久永久免费观看 | 成人亚欧欧美激情在线观看 | 一区二区三区四区产品乱 | 国产精品宾馆在线精品酒店 | 美女啪啪网址 | 欧美日韩色 | 中文字幕人妻丝袜美腿乱 | 青青草七次郎 | 国产成人福利在线视频播放下载 | 1024国产精品| 欧美另类色| 国产在线1 | 国变精品美女久久久久av爽 | 亚洲狠狠爱综合影院网页 | 91久久精品一区二区三区大 | 日产国产亚洲a | 欧美人动与zoxxxx乱 | 亚洲 国产 另类 精品 专区 | 免费在线观看a视频 | 久久99精品久久久久久秒播蜜臀 | 在线观看片免费人成视频无码 | 丰满少妇毛片97级无遮挡 | 免费a在线观看播放 | 呦姣小u女国产精品 | 亚洲成年av天堂动漫网站 | 国产成人精品日本亚洲网站 | 国产一区二区在线免费 | 国产精品无码2021在线观看 | 狠狠综合久久狠狠88亚洲 | 久久国产自偷自偷免费一区调 | 丰满人妻熟妇乱又伦精品 | 天天射天天爱天天干 | 日韩精品一区二区av在线 | av2014天堂网 | 久草久草在线 | av色综合网 | 成人一区二区三区久久精品嫩草 | 色婷五月天 | 日韩av在线看免费观看 | 亚洲另类激情综合偷自拍图片 | 天天添天天操 | 人人爽天天碰狠狠添 | 又粗又硬大战丰满少妇 | 国产无套精品一区二区三区 | 无码人妻精品一区二区三区东京热 | 韩日午夜在线资源一区二区 | 少妇被多人c夜夜爽爽av | 一区二区三区欧美在线 | 久久婷婷五月综合色国产香蕉 | 精品视频福利 | 欧美日韩高清一区 | 在线观看人成视频免费不卡 | 91精品视频播放 | 日本a免费 | 夜夜嗨网站| 韩国久久久久久 | 天堂躁躁人人躁婷婷视频ⅴ | 日韩在线色视频 | 97se亚洲国产综合自在线尤物 | 国产超碰人人做人人爽av动图 | 女人张开双腿让男人猛桶 | 成年女人免费碰碰视频 | 女久久 | 国产精品1区2区 | 成人黄色免费大片 | 欧美日韩黄色一级片 | 亚洲人成电影在线观看网色 | 欧美成人免费全部 | 青楼妓女禁脔道具调教sm | 国产无精乱码一区二区三区 | 婷婷色在线视频 | 午夜做受视频试看6次 | 免费午夜爽爽爽www视频十八禁 | 性xxxx欧美老妇胖老太269 | 中文天堂在线观看 | 性爱一级视频 | 天天操天天添 | 亚洲春色av无码专区最 | 亚洲自拍偷拍综合 | 无码国产玉足脚交久久2020 | 18黑白丝水手服自慰喷水 | 国内精品人妻无码久久久影院 | 国产精品 欧美 日韩 | av综合网站 | 精品国产一区二区三区av爱情岛 | 成在人线av无码免费看网站直播 | 色人阁视频 | 日韩成人大屁股内射喷水 | 嫩草影院懂你的 | 亚洲欧美日韩国产精品 | 888久久 | 日本日本乱码伦专区 | 欧美69式互添视频在线 | 青青草视频在线免费播放 | 人妻忍着娇喘被中进中出视频 | 国产成人综合95精品视频 | 三级午夜理伦三级 | 久久性色av亚洲电影 | 青青草午夜 | 久久在精品线影院精品国产 | 精品日韩 | 久久精品国产亚洲77777 | 亚州综合视频 | 日本一区免费看 | 九九视频免费在线 | 在线观看无码的免费网站 | 蜜芽av无码精品国产午夜 | 亚洲成av人不卡无码影片 | 粉嫩一区二区三区四区公司1 | 无码人妻少妇色欲av一区二区 | 欧美人与动牲交zooz乌克兰 | 男人天堂网站在线观看 | 艳妇荡乳豪妇荡乳av精东 | 四虎影院在线观看网站 | 欧美激情在线看 | 中文在线字幕免费观看 | 九九热在线视频精品店 | 国产第1页| 日韩av网站在线观看 | 2021久久国自产拍精品 | 天堂网一区二区三区 | 国产日本视频 | 久久www免费人成看片好看吗 | 狠狠色婷婷久久综合频道毛片 | www.色婷婷.com | 亚洲精品一区二区三区影院忠贞 | 日韩精品极品视频在线观看免费 | 蜜臀av性久久久久蜜臀av | 天天躁日日躁狠狠躁a∨麻豆 | 婷婷丁香五月激情综合 | 大地资源在线观看官网第三页 | 欧美成人精品一区二区综合 | 无人区国产成人久久三区 | va婷婷在线免费观看 | 亚洲肉体裸体xxxx137 | 山外人精品影院 | 伊人春色网站 | 亚洲综合成人婷婷五月网址 | 成人一在线视频日韩国产 | 成人男男视频拍拍拍在线观看 | 天天操天天艹 | 少妇被粗大的猛烈进出69影院一 | 先锋影音男人av资源 | 日日弄天天弄美女bbbb | 亚洲精品网站在线观看你懂的 | 无套内射在线观看theporn | 亚洲欧美日本国产高清 | 欧美少妇xxxxx | 亚洲 日韩 欧美 有码 在线 | 国产成人精品亚洲777人妖 | 手机在线免费看毛片 | 亚洲a∨国产av综合av下载 | 伊人久久无码大香线蕉综合 | 亚洲日产无码中文字幕 | 亚洲少妇p | 中文日产幕无线码一区2023 | 丝袜 中出 制服 人妻 美腿 | 国产99久久久| 国产女主播高潮在线播放 | 人妻国产成人久久av免费高清 | 欧美黑人精品一区二区不卡 | 日日躁夜夜躁狠狠躁aⅴ蜜 亚洲午夜精品在线观看 | 亚洲日本欧美日韩中文字幕 | 97国产超碰一区二区三区 | 国产伦精品一区二区三区照片91 | 国产第一页屁屁影院 | 九色porny丨精品自拍视频 | 男女啪啪做爰高潮www成人福利 | 色窝窝无码一区二区三区成人网站 | 国产在线拍偷自揄拍精品 | 超碰一区二区三区 | 青青草好吊色 | 天天综合天天添夜夜添狠狠添 | 国产在线精品一区二区三区直播 | 欧美成人aaa| wwwxx欧美| www.亚洲一区二区 | 久久精品国产亚洲一区二区 | 成人午夜免费在线 | 免费国产污网站在线观看不要卡 | 亚洲色大成网站www永久麻豆 | 亚洲国产成人在线 | 雯雯在工地被灌满精在线视频播放 | 体内精69xxxxxx | 欧美肥熟妇xxxxx | 国产精品美女www爽爽爽动态图 | 日韩激情无码免费毛片 | 91免费版视频在线观看 | 色欲久久九色一区二区三区 | 亚洲 欧美 中文 日韩aⅴ | 少妇高潮叫床对白xxxxx | 久久精品视频在线观看 | 国产久一 | 嫩草研究院久久久精品 | 野狼av午夜福利在线 | 大胸双性奶水浪荡美人 | 99re视频| 人善交video另类hd国产片 | 国产成人欧美日韩在线电影 | 国产九九99久久99大香伊 | 99久久精品毛片免费播放高潮 | 少妇高潮喷水久久久影院 | www.伦理少妇 | 国产超碰人人做人人爱一二区视品 | 草草在线视频 | 99视频久久| 亚洲经典千人经典日产 | 久久av青久久久av三区三区 | 九九在线中文字幕无码 | 婷婷四房播播 | 91久久久久久久国产欧美日韩- | 91污片| 中文字幕日韩精品亚洲一区 | 激情综合网五月婷婷 | 欧美一区二区三区四区在线 | 99久久婷婷国产综合亚洲 | www.亚洲色图.com| 风韵丰满熟妇啪啪区老老熟女百度 | 精品免费一区二区三区在 | 国产 浪潮av性色四虎 | 爆操清纯美女 | 黄色一级视频在线观看 | 久久99热全是成人精品 | 亚洲精品久久区二区三区蜜桃臀 | 日韩精品专区在线影院重磅 | 国产欧美高清视频 | 人人搞人人| 一区二区三区欧美在线观看 | 日本a级在线 | 国产亚洲精久久久久久叶玉卿 | 少妇人妻88久久中文字幕 | 中文字幕第66页 | 狠狠狠色丁香婷婷综合久久88 | 欧美乱人免费视频观看 | 亚洲 欧美 中文 日韩aⅴ综合视频 | 免费男人下部进女人下部视频 | 鲁一鲁久久 | 特级无码毛片免费视频 | 国产精品蜜 | 午夜在线激情 | 在线一区二区三区四区 | 欧美一区在线观看视频 | 国产欧美一区二区三区四区五区 | 少妇高潮久久久久久一代女皇 | 中文字幕 日韩有码 | 中文字幕日韩欧美一区二区三区 | 女同重口另类在线观看 | 国产成年妇视频 | 成人激情小说网站 | 真实国产乱子伦对白视频 | 妻色成人网 | 亚洲国产欧美在线观看片 | 亚洲丰满少妇xxxxx高潮对白 | 欧美放荡的少妇 | 天天视频一区二区三区 | 国产成人精品综合 | 无码精品国产dvd在线观看9久 | 国产成人久久777777 | 一道本av在线 | 日韩射吧| 国产精品爽爽va吃奶在线观看 | 亚洲国产综合另类视频 | 亚洲一卡二卡三卡四卡无卡麻豆 | 日韩精品一区二区三区亚洲综合 | 久久久国产精品麻豆a片 | 无码人妻丰满熟妇片毛片 | 欧美在线看片a免费观看 | 国产一区二区三区久久 | 国产秒拍福利 | 国产成人女人毛片视频在线 | 国产日韩av在线播放 | 日韩精品成人在线 | 中文字幕人妻熟女人妻洋洋 | 亚洲一级一区 | 人人射人人射 | 2018高清国产一区二区三区 | 一呦二呦三呦精品网站 | 久久免费视频观看 | 国产精品无码免费专区午夜 | 国产又色又爽又黄的在线观看视频 | 操人视频在线观看 | 毛片.com| 青楼妓女禁脔道具调教sm | 成年午夜性影院免费观看 | 人人超人人超碰超国产 | 欧美精品一区二区三区视频 | www.色女人 | 久久久久久国产精品免费播放 | 夜夜夜夜夜操 | 亚洲伦理自拍 | 欧美午夜精品一区二区 | www.97色| 少妇丰满尤物大尺度写真 | 久久97超碰人人澡人人爱 | 男人的天堂中文字幕 | 国产成人无码av在线播放dvd | 国产人免费人成免费视频喷水 | 国产精品一区二区6 | 国产精品妇女一二三区 | 欧美一区二区最爽乱淫视频免费看 | 国产成人av综合亚洲色欲 | 欧美疯狂做受xxxx | 中文字幕123伦 | 99一区二区 | 精品国产精品国产自在久国产 | 男女免费隐私网站 | 97在线精品视频免费 | 有一婷婷色 | 欧美成人午夜在线观看视频 | 啪啪小视频网站 | 日韩在线精品 | 中文字幕人妻无码一区二区三区 | 69av影院 | 专干老肥熟女视频网站 | 久久不见久久见免费影院www日本 | 丝袜 亚洲 另类 欧美 综合 | 国产在线精品成人一区二区三区 | 人妻无码人妻有码中文字幕在线 | 欧美性做爰片免费视频看 | 69风韵老熟女口爆吞精 | 亚洲午夜理论片在线观看 | 免费中文字幕在线观看 | 亚洲大色堂人在线无码 | 九色伊人| 亚洲精品日韩色噜噜久久五月 | 久久久国产乱子伦精品 | 国内精品久久久久久久电影视 | 超碰中文在线 | 丰腴饱满的极品熟妇 | 日韩精品视频在线观看网站 | 色av吧 | 樱花草在线社区www中国中文 | 黄色成人小视频 | 日韩高清亚洲日韩精品一区二区三区 | 日韩激情小视频 | 日韩 亚洲 制服 欧美 综合 | 人妻少妇精品无码专区漫画 | 国产精品成人影院在线 | 国产v亚洲v天堂无码网站 | 羞羞视频入口 | 97一区二区国产好的精华液 | 日本a黄色片 | 国产α片免费观看在线人 | 欧美影片免费看 | 欧美 亚洲 日韩 中文2019 | 亚洲精品国产字幕久久不卡 | 尤物tv国产精品看片在线 | 美女视频毛片 | 午夜狠狠干 | 暗哟交小u女国产精品袍频 午夜yy | 亚洲成av人片一区二区蜜柚 | 在线欧美不卡 | 亚洲电影天堂在线国语对白 | 日韩av不卡在线 | 精品视频999| 亚洲一区二区在线视频 | 天美传媒精品 | 色老板精品无码免费视频 | 秋霞国产精品一区二区 | 色眯眯影院 | 日日噜噜噜夜夜狠狠久久蜜桃 | 欧美精品久久96人妻无码 | 鸥美一级黄色片 | 绝密卧底柳云龙45集播放地址 | 色人阁网站 | 青草视频免费看 | 天堂岛国av无码免费无禁网站 | 情侣做性视频在线播放 | 日本韩国免费观看 | 欧美日韩一区二区三区在线播放 | 五月综合激情在线 | 最新精品国偷自产在线 | aaa极品在线 | 91香蕉视频 | 久久久久久人妻一区二区三区 | 啪啪免费小视频 | 免费看成人毛片无码视频 | 免费看黑人强伦姧人妻 | 亚洲 卡通 欧美 制服 中文 | 18禁无码无遮挡在线播放 | 人妻人人做人碰人人添 | 精品欧美一区二区久久久伦 | 卡一卡2卡3卡精品网站 | 动漫高h纯肉无码视频在线观看 | 蜜桃精品视频 | 国产成人av片免费 | 嫩草天堂 | 日本大片在线播放 | www.人人草 | 极品少妇被猛得白浆直喷白浆小说 | 久久综合色婷婷 | 国产午夜福利在线观看红一片 | 四虎毛片| 国产日韩综合一区二区性色av | 国产成人香蕉久久久久 | 对白刺激theporn | 美女视频在线观看福利网站在线观看 | 91黄色免费网站 | 精品久久免费视频 | 另类 亚洲 图片 激情 欧美 | 97精品尹人久久大香线蕉 | 亚洲国产一区二区三区亚瑟 | 成人自拍视频网 | 天天干天天草 | 欧美乱色视频 | 裸体性做爰免费视频网站 | 天天色亚洲 | 黑人巨大亚洲一区二区久 | 92精品成人国产在线观看 | 开心网五月色婷婷 | 国产三级在线观看免费 | 日韩人妻无码精品系列专区 | 18禁止午夜福利体验区 | 黄网站免费永久在线观看下载 | 国产二区精品 | 日本一区二区a√成人片 | 538国产精品一区二区免费视频 | 99精品一区二区三区无码吞精 | 女人a级毛片 | 国产欧美日韩综合视频专区 | 天天狠天天透 | 五月色婷 | 国产在线精品一区二区不卡麻豆 | 蜜桃av鲁一鲁一鲁一鲁俄罗斯的 | 一级片av | 国产微拍精品一区 | 日本在线中文 | 免费看男女做羞羞的事网站 | 性激情网站 | 四虎免费最新在线永久4hu | 免费福利视频在线观看 | 久草日韩| 鲁大师在线视频播放免费观看 | 无码字幕av一区二区三区 | 视频分类 国内精品 | 欧美性一区二区三区 | 自拍区小说区图片区亚洲 | 午夜精品久久久久久久四虎 | 国产精品老汉av | 91av观看 | 亚洲精品国产一区二区贰佰信息网 | 免费的美女色视频网站 | 国产精品久久麻豆 | 久久婷婷五月综合鬼色 | 男人天堂tv| 999国内精品永久免费视频 | 亚洲欧洲在线播放 | 中文字幕在线播放 | 国产亲伦免费视频播放 | 国产精品18久久久久vr使用方法 | 9l国产精品久久久久尤物 | 国产精品丝袜黑色高跟鞋 | 欧美性俱乐部 | 男女午夜猛烈啪啦啦视频 | 国产亚洲精品电影网站在线观看 | 日韩丝袜另类精品av二区 | 国产秒拍福利 | 色诱视频在线观看 | 久久永久免费视频 | 亚洲欧美第一页 | 国产福利一区二区三区在线视频 | 五月天婷亚洲天综合网精品偷 | 激情中文网| 99噜噜噜在线播放 | 蜜桃免费一区二区三区 | 任我行视频在线观看国语 | 国产偷国产偷亚洲高清人白洁 | 一二三四视频社区3在线高清 | 玖玖在线| 亚洲午夜影视 | yw.139尤物在线精品视频 | 免费看男女高潮又爽又猛视 | 三级视频在线观看 | 国产伊人一区 | 亚洲欧美日韩另类精品一区二区三区 | 国产免费拔擦拔擦8x高清在线人 | 免费人妻无码不卡中文字幕系 | 国产裸体写真av一区二区 | 日本视频在线免费 | 精品av熟女一区二区偷窥海滩 | 欧洲精品一卡2卡三卡4卡影视 | 国产乱码一区 | 国产在线一二区 | 亚洲蜜臀av国产aⅴ综合小说 | 1000部夫妻午夜免费 | 成人网战 | 一级全黄少妇性色生活片毛片 | 天天躁夜夜躁狠狠躁2021 | 91热在线 | 四虎成人欧美精品在永久在线 | 免费a级毛片出奶水影院 | 午夜性刺激免费看视频 | 亚洲欧美日韩中文二区 | 亚洲情欲网 | 人妻熟人中文字幕一区二区 | 无码专区无码专区视频网址 | 精品免费一区二区 | 免费1级做爰片在线观看爱 日本精品三级 | 四库影院永久四虎精品国产 | 久久久久无码精品国产h动漫 | 国产嫖妓风韵犹存对白 | 午夜97| 亚洲日韩爆乳中文字幕欧美 | 国产三级国产精品国产国在线观看 | 日本高清久久久 | 成av免费大片黄在线观看 | 国产精品第5页 | 九九热爱视频精品视频16 | 欧美寡妇xxxx黑人猛交 | 久久传媒av性色av人人爽网站 | 国产成人无码免费视频97app | 49vv国产淫片aaaaaaa| 男女做爰猛烈啪啪吃奶图片 | 久久久久久久综合综合狠狠 | av黄色影院 | 色香蕉视频 | 黄色av国产 | 欧美成人三级在线观看 | 99热手机在线 | 总裁男男互攻互受h啪肉np文 | 国产免费拔擦拔擦8x软件大全 | 久久亚洲精品无码爱剪辑 | 精品综合久久久久久88 | 日本狂喷奶水在线播放212 | 日韩精品一区二区三 | 国产情侣真实露脸在线 | 高清国产一区二区三区四区五区 | 国内精品一区二区福利视频 | 亚洲精品国产第一区第二 | 大香蕉毛片 | 国产在线乱码一区二三区 | 精品国产拍国产天天人 | 国产老妇伦国产熟女老妇视频 | 久久久噜噜噜久久中文福利 | 91大神视频在线免费观看 | 91精品国产二区在线看大桥未久 | 国产成人麻豆亚洲综合无码精品 | 午夜国产一级 | 女性自慰网站免费看ww | 欧美一卡2卡3卡4卡新区在线 | www在线视频 | 中文字幕亚洲精品在线观看 | 四虎成人在线观看 | 国产成人无码av在线播放不卡 | av在线第一页 | 在线观看精品国产 | 给我免费的视频在线观看 | 免费欧美日韩 | 熟女系列丰满熟妇av | 国产精品久久久久久久久久久免费 | 麻豆画精品传媒2021一二三区 | 色午夜影院 | 国产精品欧美大片 | 99无码人妻一区二区三区免费 | 久久躁狠狠躁夜夜av | 天天爱天天做久久狠狠做 | 午夜免费视频观看 | 久草在线中文888 | 亚洲精品无码午夜福利理论片 | 久久大香伊蕉在人线免费 | 亚洲人成一区二区 | 久久国产美女精品久久 | 久久黄色精品网站 | av网站在线观看不卡 | 色就是色欧美色图 | 亚洲人成电影网站在线播放 | 国语一区二区 | 成年人看的羞羞网站 | 在线免费观看日韩 | 无码aⅴ精品一区二区三区 高清一区二区三区四区 | 日韩免费特黄一二三区 | 精品久久一区 | 亚洲一卡2卡3卡4卡国产 | 国产精品100页 | 欧美男人的天堂 | 一级黄色片一级黄色片 | 国产精品99久久久久久久女警 | 欧美日本免费 | 成人性生交视频免费观看 | 色又黄又爽网站www久久 | 99久久久无码国产精品性 | 成在线人av无码高潮喷水 | 91人人爽久久涩噜噜噜 | 免费全部高h视频无码 | 国产成人一区二区三区在线观看 | av无码国产在线观看岛国 | 久久亚洲99精品2021 | 夜夜爽一区二区三区精品 | 国产成+人+综合+亚洲欧美丁香花 | 在线看欧美 | 91麻豆精品一二三区在线 | 亚洲欧美激情视频 | 亚洲国产日韩制服在线观看 | 5060国产午夜无码专区 | 9l视频自拍九色9l视频 | 天堂а√在线地址在线 | 精品含羞草免费视频观看 | 久草综合网 | 国产精品爆乳在线播放 | 色综合免费视频 | 狠狠躁夜夜躁人人爽天天高潮 | 理论片国产 | 影音先锋大型av资源 | 亚洲图片日本视频免费 | 91亚洲成a人片在线观看www | 日本一卡二卡四卡无卡乱码视频免费 | 国产公开免费人成视频 | 伊人久久大香线蕉综合直播 | 插我一区二区在线观看 | 少妇高潮流白浆在线观看 | 久久视频一区 | 色拍拍综合 | 俄罗斯老熟妇性爽xxxx | av解说在线观看 | 乌克兰精品伦理 | 精品精品国产理论在线观看 | 久久国产成人精品av | 成人在线免费高清视频 | 啊~用力cao我cao死我视频 | 青草网| 狠狠躁夜夜躁青青草原软件 | 国产免费一区二区三区在线观看 | 日韩精品无码免费专区网站 | 免费超爽大片黄 | 国产精品视频免费观看 | 国产精品色内内在线播放 | 久久综合给久久狠狠97色 | 国产操片| 人妻.中文字幕无码 | 国产毛片a高清日本在线 | 国产精选在线观看 | 欧美色一级 | 亚洲黄色三级 | 免费 黄 色 人成 视频 在 线 | 伊甸园永久免费网站 | 国产自愉自愉免费精品七区 | 精品视频专区 | 色牛av| 少妇被粗大的猛烈进出动视频 | 日本精品视频在线 | 精品人妻av区乱码 | 国产精品ⅴa有声小说 | 亚洲欧美不卡高清在线 | 亚洲加勒比无码一区二区 | 色欲综合久久躁天天躁蜜桃 | 97久久久久 | 欧洲美女tickling免费网站 | 在线观看av网站永久 | 久久久精品日本一区二区三区 | 无码人妻丰满熟妇区视频 | 国产女人高潮抽搐喷水免费视频 | 亚洲日本乱码一区二区产线一∨ | 欧美激情一区二区 | 欧美成人精品欧美一级乱黄 | 午夜内射中出视频 | 日本免费黄视频 | 国产精品a国产精品a手机版 | 欧美精品成人在线 | 精品无码成人网站久久久久久 | 可以免费观看的毛片 | 东京热无码中文字幕av专区 | 女邻居的大乳奶水小说 | 国产 高清 无码 在线播放 | 涩涩视屏 | 色吊丝最新永久免费观看网址 | 无码日韩精品一区二区人妻 | 色猫咪av在线观看 | 精品国品一二三产品区别在线观看 | 久久99精品久久久秒播软件优势 | 国产系列丝袜熟女精品视频 | 日韩网站在线观看 | 日韩久久精品一区二区 | 夜夜爽夜夜叫夜夜高潮 | 精品一区二区三区激情在线欧美 | av大片在线观看 | 国产精品无遮挡 | 欧美性猛交xxxx乱大交极品 | 日本体内she精视频 99视频+国产日韩欧美 | 亚洲日本va午夜在线影院 | 亚洲三级网站 | 韩国精品无码久久一区二区三区 | 全黄久久久久a级全毛片 | 久久大胆 | 成人精品亚洲人成在线 | 中文日产日产乱码乱偷在线 | 无码专区―va亚洲v专区在线 | 香蕉久久一区二区不卡无毒影院 | 又粗又大又硬毛片免费看 | 中文字幕一二三区波多野结衣 | 亚洲综合av一区二区三区 | 国产在线欧美日韩 | 国产精品推荐天天看天天爽 | 亚洲欧美日韩久久久久久 | 兔费看少妇性l交大片免费 天堂自拍 | 伊人大香线蕉精品在线播放 | 国产精品亚洲二区在线播放 | 欧美激情亚洲色图 | 国产高清露脸孕妇系列 | 好看的av网址 | 日本黄色的视频 | 国产三级久久精品三级 | 黄色av免费在线 | 天天干天天碰 | 欧洲精品卡1区2卡三卡四卡 | 亚洲久久色 | 久久精品午夜福利 | 精品视频大全 | 国产乱码在线 | 成人看片黄a免费看在线 | 久久成人免费网站 | 伊人日日夜夜 | 狠狠精品干练久久久无码中文字幕 | 国产精品福利自产拍在线观看 | 熟妇五十路六十路息与子 | 日本精品αv中文字幕 | 国产美女福利视频 | 国产老头和老太xxxxx视频 | 人人cao | 九九久久精品 | 久热国产精品视频一区二区三区 | 黑人干亚洲女 | 久久亚洲中文字幕精品一区 | 国产清纯白嫩初高生在线观看 | 亚洲欧美日韩国产综合v | ā片在线观看免费看无码 | 国产精品无码v在线观看 | jizzav| 日韩a片无码毛片免费看 | 肥臀熟女一区二区三区 | 精品国产黑色丝袜高跟鞋 | 日本aa大片在线播放免费看 | 国产一区二区三区久久久 | 精品一卡二卡三卡 | 亚洲欧美色图在线 | 强行18分钟处破痛哭av | 亚洲欧美午夜理论电影在线观看 | 国产精品嫩草影院入口一二三 | 欧美激情视频一区二区三区 | 亚洲成av人片在线观看下载 | www.日韩av.com| 99看片网 | 91成人在线看 | 日韩免费在线观看 | 五月婷婷一区二区 | 日日躁夜夜躁xxxxxxx | 日韩精品免费一区二区夜夜嗨 | 91精品卡一卡二卡乱码 | 久草久草久草 | 中文字幕亚洲精品在线观看 | 欧美猛交免费 | 日韩女优中文字幕 | 久久久国产精华液 | 性色av一二三天美传媒 | 国产亚洲曝欧美精品手机在线 | 特黄特色三级在线观看 | 青青草国产免费无码国产精品 | 欧美色综合网 | 近伦中文字幕 | 国产在线aaa片一区二区99 | 国产午夜精品理论片小yo奈 | 国产精品久久久一区二区三区 | 女人被躁到高潮嗷嗷叫免费 | 亚洲最新av在线 | 国产成人a在线观看视频免费 | 日韩精品久久久久久久玫瑰园 | 亚洲aaa级| 中出乱码av亚洲精品久久天堂 | 成人啪啪一区二区三区 | 亚洲人成亚洲精品 | 在线视频亚洲欧美 | 国产剧情av麻豆香蕉精品 | 在线视频免费观看一区 | 亚洲免费观看高清完整 | 日本少妇一区二区三区 | 亚洲蜜桃精久天干天干天啪啪夜l | 护士av无码在线观看 | 国产精品第157页 | 蜜桃麻豆www久久囤产精品 | 三级黄网 | 中文字幕交换夫妇ntr从窗户 | 精品日本免费一区二区三区 | 小小拗女性bbwxxxx国产 | 色婷婷亚洲一区二区综合 | 青青草国产精品人人爱 | 国产一区二区三区免费播放 | 一区三区视频在线观看 | 刘玥91精选国产在线观看 | 国产真人无码作爱视频免费 | 国产精品久久久久9999无码 | 久久精品国产99国产精2021 | 黑人干亚洲 | 国产在线不卡视频 | 午夜影院在线观看 | 欧美黄色片视频 | 日韩精品久久久久久久软件91 | 日本三级欧美三级人妇视频黑白 | 最新av片免费网站入口 | 午夜免费啪视频在线观看 | 人妻系列无码专区免费视频 | 成人网战 | 国产高清亚洲精品视bt天堂频 | 国产精品无码一区二区三区不卡 | 玖玖综合网 | 一本大道熟女人妻中文字幕在线 | 国产精品久久久久9999小说 | 制服丝袜人妻有码无码中文字幕 | 蜜桃臀无码内射一区二区三区 | 看美女毛片 | 久久精品国产精品亚洲色婷婷 | 中文字幕乱妇无码av在线 | 丰满岳乱妇一区二区 | 综合图区亚洲欧美另类图片 | 伊人春色网站 | 性中国妓女毛茸茸视频 | 精品国产a | 男人午夜影院 | 青青草超碰在线 | 精品视频成人 | 四虎黄网| 久久婷婷色综合 | 日本狠狠操 | 亚洲 制服 丝袜 无码 | 亚洲国产制服丝袜先锋 | 亚洲狠| 国产精品女人精品久久久天天 | 欧美又大又黄又粗高潮免费 | 国产乱了实正在真 | 80s国产成年女人毛片 | 免费观看黄网站 | 亚洲网站色 | 免费在线观看一区 | 99免费看 | 亚洲 欧美日韩 综合 国产 | 五十老熟妇乱子伦免费观看 | 在线观看黄a∨免费无毒网站 | 成人片黄网站色大片免费观看 | 新97超碰| 最新av片免费网站入口 | 9l视频自拍蝌蚪9l视频 | 亚洲午夜无码久久久久软件 | 精品 日韩 国产 欧美 视频 | 精品伊人 | 天天操夜操 | 韩日激情视频 | 一区二区三区日韩视频 | 日日夜av | 精国产品一区二区三区四季综 | 色屁屁在线 | 日韩久久色 | 正在播放国产老头老太色公园 | 欧美日韩在线观看不卡 | 国产天天操| 九九九九精品 | 中文字幕久热 | 国产一区二区片 | jvid福利写真一区二区 | 亚洲另类成人小说综合网 | 天堂在线资源中文在线8 | 粗大的内捧猛烈进出在线视频 | 99视频播放 | 在线观看成人无码中文av天堂 | 狠狠色丁香久久婷婷综合蜜芽五月 | 麻豆乱淫一区二区三区 | 鲁一鲁一鲁一鲁一色 | a√天堂在线观看 | 美女免费毛片 | 亚洲精品一区二区中文字幕 | 北条麻妃一区二区三区av高清 | 欧美日韩在线免费播放 | 少妇高潮太爽了在线观看欧美 | 国产成在线观看免费视频成本人 | 亚欧在线观看 | 激情久| 国产精品原创 | 福利社午夜影院 | 久久精品91| av在线操 | 久久久精产国品一产二产三产区 | 俄罗斯少妇bbb好爽 青青草日本 | 久久久精品小视频 | 国产又黄又粗又硬 | 77久久| www.夜夜操 | 国产情侣疯狂作爱系列 | 大屁股熟女一区二区三区 | 亚洲精品乱码久久久久66国产成 | 国产精品区一区二区三含羞草 | 久久久视频在线 | 亚洲日本在线电影 | 欧美 日韩 国产 激情 | 日本一本免费一二区 | 99精品国产热久久91蜜凸 | 无码无套少妇毛多18pxxxx | 国产国产人免费视频成69 | 亚洲精品视频在线观看免费 | 99久久久国产精品免费消防器 | 久久15p| 亚洲天堂aaa | 美女的尿囗网站免费 | 亚洲aⅴ在线无码天堂777 | 熟女视频一区二区在线观看 | 国产成人亚洲综合网色欲网久下载 | 大胸美女被吃奶爽死视频 | 无码人妻精品一区二区三区夜夜嗨 | 日b视频免费看 | 97超碰国产精品无码分类 | 性欧美熟妇视频免费观看 | 国产精品 日韩精品 | 国产乱人伦偷精品视频aaa | 国产一二区视频 | 99久 | 欧美日韩首页 | 成年永久一区二区三区免费视频 | 亚洲成人激情在线 | 欧美国产影院 | 日韩一区二区免费播放 | 久草中文网 | 国产白丝在线 | 欧美一级一区二区三区 | 亚洲久悠悠色悠在线播放 | 综合在线观看 | 国产黄色片视频 | 国产奶水涨喷在线播放 | 99国产伦精品一区二区三区 | 亚洲欧洲av综合色无码 | 国产日产精品一区二区三区四区的观看方式 | 欧美日韩国产中文高清视频 | 麻豆成人久久精品综合网址 | 久久99精品国产麻豆婷婷洗澡 | 午夜福利1000集在线观看 | 日韩和欧美一区二区 | 国产白丝一区二区三区 | 中国精品一区二区三区 | 日本亚洲欧美国产日韩ay | 亚洲大尺度无码专区尤物 | 久久天天躁夜夜躁狠狠综合 | 人与动人物xxxx毛片人与狍 | 91视频在线免费 | 91综合色 | 懂色av一区二区三区在线播放 | 欧美日韩一区二区不卡 | 亚洲国产综合无码一区 | 亚洲国产精品久久精品成人网站 | 天天天色| 91网页入口| 精品少妇人妻av免费久久洗澡 | 天天干夜夜撸 | 女人让男人桶爽30分钟 | 午夜无码人妻av大片色欲 | 五月六月丁香婷婷激情 | 国产亚洲福利在线视频 | 国产av偷闻女邻居内裤被发现 | 久久精品国产三级 | 无码av无码免费一区二区 | 日日夜夜嗷嗷叫 | 久久久久人妻精品一区 | 国产免费av一区二区三区 | 亚洲成人在线网址 | 久久xxx | 亚洲综合色婷婷在线影院p厂 | 91久久北条麻妃一区二区三区 | 欧美1区2区3区视频 亚洲av禁18成人毛片一级在线 | 粉嫩大学生无套内射无码卡视频 | 看片网址国产福利av中文字幕 | 希岛爱理在线 | 久久亚洲高清 | 久久本道综合久久伊人 | 超碰免费在 | 久久草草精品入口av | 全免费a级毛片 | 色狠狠一区二区 | 亚洲熟女乱色综合亚洲图片 | 欧美一区二区三区免费观看 | 噼里啪啦免费观看高清动漫 | 六月婷婷视频 | 高潮爽死抽搐白浆gif视频 | 欧美成人亚洲 | 国产综合一区二区 | 干美女网站 | 国产后入清纯学生妹 | 午夜亚洲精品久久一区二区 | 视频在线91 | 在线观看国产精品乱码app | 中文字幕精品在线 | 人人模人人爽人人喊久久 | 任你操av | 天天操夜夜躁 | 国产亚洲日韩a欧美在线人成 | 亚洲欧美成人中文日韩电影网站 | 国产欧美日韩a片免费软件 最近中文字幕日本 | 青青草原综合久久大伊人 | 欧美顶级毛片在线播放 | 国产一区91 | 日日操日日操 | 717影院理论午夜伦八戒 | 久久久久99人妻一区二区三区 | 亚洲精品久久久中文字幕 | 蜜臀久久99精品久久久无需会员 | 国产91在线亚洲 | 国产主播自拍av | 国产精品久久久久久久久免费软件 | 国产又粗又猛又爽视频上高潮 | 精品国产国语对白久久免费 | 亚洲日韩欧洲无码av夜夜摸 | 欧美一区久久 | 天天狠天天插 | 日韩午夜在线观看 | 丝袜精品 欧美 亚洲 自拍 | 欧美三级不卡在线观看 | 中文字幕人妻互换av久久 | 国产精品久久久久久久久久久久久久久久久久 | 强被迫伦姧在线观看无码 | 国产乱淫av国产8 | 狠狠操狠狠插 | 国产成人主播 | 中文字幕少妇在线三级hd | 天天干天天谢 | 国产成人精品999 | 天天澡天天摸天天添视频 | 婷婷六月天丁香 | 欧美深夜福利视频 | 98色花堂精品视频在线观看 | 成人免费午夜无码视频 | 舌头伸进去添的我好爽高潮欧美 | 东北农村乱淫视频 | 亚洲区免费中文字幕影片|高清在线观看 | 亚欧日韩欧美网站在线看 | 秋霞av国产精品一区 | 亚洲操操 | 少妇厨房愉情理伦片bd在线观看 | 久久人妻无码aⅴ毛片a片直播 | 屁股av | 久久精品国产2020 | www.av成人| 国产高清一区二区三区视频 | 中国极品少妇xxxx做受 | 日本丰满熟妇乱子伦 | 国产剧情av麻豆香蕉精品 | 亚洲国产精品综合久久网各 | 一级全黄少妇性色生活片 | 亚洲色偷拍另类无码专区 | 国产精品28p | 女人裸体夜夜爽快 | 男女性杂交内射女bbwxz | 不卡久久 | 亚洲精品一区二区三区四区手机版 | 成人爽爽爽 | 国产在线观看无码不卡 | www.91精品视频 | 日本二区三区欧美亚洲国 | 在线观看免费无码专区 | 久久婷婷丁香五月综合五 | 中国亚洲女人69内射少妇 | 欧美精品亚洲一区 | 91大神视频在线免费观看 | 四虎影院在线观看av | 视频一区在线免费观看 | 青青av在线 | 久久香蕉超碰97国产精品 | 丰满少妇久久久久久久 | 狠狠综合久久久久综合网址 | 日韩视频在线免费观看 | 国产一区二区在线影院 | 嫩草在线播放 | 免费av不卡在线观看 | 国产伊人久久 | 久久精品国产欧美日韩 | 国产一区二区精品 | 中文字幕无码日韩中文字幕 | 国产精品爽爽久久久久久 | 成人做爰69片免费看网站色戒 | 无码国产午夜福利 | 91久久久久久久久久久 | 人人艹在线观看 | 久久久久久人妻精品一区 | 污污又黄又爽免费的网站 | 五月天综合社区 | 色欲久久久中文字幕综合网 | 国产男生午夜福利免费网站 | 久久国产乱子伦精品免费台湾 | 国产第一页在线播放 | 露脸国产精品自产拍在线观看 | 日本久久综合网 | 五月婷婷激情综合 | 99久精品视频 | 好吊妞视频788gao在线观看 | 91极品在线 | 国产一卡2卡3卡四卡精品网站 | 亚洲精品成人网线在线播放va | 亚洲成人aa | 色欲香天天天综合网站无码 | 91亚洲精品久久久蜜桃 | 国产精品内射后入合集 | 国产精品成人无码a片在线看 | 日本欧美色 | 女人被男人爽到呻吟的视频 | 精品乱人伦一区二区三区 | 成 人 网 站不卡在线观看 | 又摸又揉又黄又爽的视频 | 欧美一级爆毛片 | 欧洲影院| 欧美自拍小视频 | 亚洲国产成人久久综合一区 | 五月天婷婷丁香网 | 天天色综合色 | 午夜伦理视频 | 成人黄色短篇小说 | 久久h| 午夜激情在线观看 | 午夜丁香视频在线观看 | 一级片www| 国产视频你懂的 | 亚洲综合精品在线 | 久久精品无码午夜福利理论片 | 91精品一线二线三线 | 四虎成人精品一区二区免费网站 | 性欧美长视频免费观看不卡 | 午夜影院网站 | 极品国产91在线网站 | 精品久久久久久无码人妻蜜桃 | 亚洲欧美国产一区二区三区 | 五月精品视频 | 欧美三级黄 | 中文字幕av亚洲精品一部二部 | 无码精品人妻一区二区三区98 | 国产美女一区 | av在线你懂的 | 国产美女狂喷水潮在线播放 | 一级少妇性色生活片免费 | 激情丁香六月 | 少妇bbbb搡bbbb桶 | 日本japanese极品少妇 | 八个少妇沟厕小便漂亮各种大屁股 | 一区二区三区四区视频 | 伊人久久大香线蕉avapp下载 | 国产良妇出轨视频在线观看 | 亚洲午夜成人久久久久久 | 性欧美大战久久久久久久83 | 亚洲аv电影天堂网 | 国产在线超清日本一本 | 欧美xxxx黑人 | 久久久aa| 一区二区三区不卡在线观看 | 69视频在线免费观看 | 日韩免费特黄一二三区 | 国内外精品成人免费视频 | 伊伊人成亚洲综合人网7777 | 狼人综合网 | 久一在线 | 最新在线中文字幕 | 婷婷在线播放 | 国产无套免费网站69 | 日本添下边视频全过程 | 成人h动漫精品一区二区无码 | 岛国搬运工av在线播放 | 在线精品亚洲第一区焦香 | 国产成人+综合亚洲+天堂 | 全部免费毛片在线播放 | 强开少妇嫩苞又嫩又紧九色 | 伊伊综合网 | 久久在线中文字幕 | 亚洲爆乳无码一区二区三区 | 欧美 日韩 国产 成人 在线观看 | 福利视频一二区 | 亚洲精品国产一区二区精华 | 女人做爰视频偷拍 | 午夜福利伦伦电影理论片在线观看 | 91一区二区在线 | 久久人人97超碰人人澡 | 久久成人亚洲 | 久久综合成人网 | 人妻少妇偷人无码精品av | 秋霞三区 | 亚洲成成熟女人专区 | 久久久久女人精品毛片九一韩国 | 黄色日本免费 | 天天天干天天天操 | 欧美熟妇喷潮xxxx | 亚洲男女内射在线播放 | 性色欲情网站iwww九文堂 | 国产综合自拍 | 亚洲aⅴ网站 | www.色人阁 | 中国美女洗澡免费看网站 | 97色偷偷色噜噜狠狠爱网站 | 色噜噜狠狠色综合av | 耽肉高h喷汁呻吟总受np | 欧美日韩精品一二三区 | 亚洲精品久久久久久动漫 | 性少妇裸体野外性xxxhd | 最新777第四色米奇影视 | 亚洲乱码日产精品bd在线看 | 国产精品2 | 国产成人午夜无码电影在线观看 | 久久伊人精品波多野结衣 | 在线精品国产成人综合 | 黄色a一级片 | 日日碰狠狠躁久久躁综合小说 | 国产精品99久久久久久武松影视 | 日韩一中文字幕 | 欧美性猛片xxxxx多人伦交 | 女女同性av片在线播放免费 | 亚洲欧美一区二区视频 | 无码免费婬av片在线观看 | 人妻去按摩店被黑人按中出 | 亚洲一区二区在线视频 | 国产中老年妇女精品 | 九九99re热线精品视频 | 美女内射毛片在线看 | 国产黄三级高清在线观看播放 | 日韩电影久久久被窝网 | 国产成人女人毛片视频在线 | 国内精品久久久久影院蜜芽 | 精品国产乱码久久久久久闺蜜 | 日本添下边视频全过程 | a级毛片基地 | 狠狠色丁香婷婷久久综合五月 | 嘿咻嘿咻高潮免费观看网站 | 特级黄www欧美水蜜桃视频 | 日韩人妻无码精品专区 | 国产精品成人嫩草影院 | 操网址 | 九九久久99综合一区二区 | 第一亚洲中文久久精品无码 | 亚洲午夜久久 | 国产精品videosex性欧美 | 500av导航大全精品 | 日本无遮羞教调屁股视频网站 | 国产高清无套内谢免费 | 欧美性猛交xxxxx按摩欧美 | 高清无码不用播放器av | 无码av高潮抽搐流白浆 | 国产综合精品久久丫 | 91三级大片视频 | 日韩精品视频免费播放 | 欧美成妇人吹潮在线播放 | a级毛片基地| 亚洲操你| 亚洲欧美一区二区精品久久久 | 亚洲伊人久久精品酒店 | 精品无人区一区二区三区 | 精品无码久久久久国产电影 | 天天操天天操天天操天天操 | 天天干天天色综合 | 日韩乱码av | 亚洲视频精品 | 日本bbw50熟 精品1区2区3区 | 天美麻花果冻视频大全英文版 | 丁香婷五月 | 亚洲∧v久久久无码精品 | 无码人妻少妇久久中文字幕蜜桃 | 国产videossex精品 | 亚洲精品美女视频 | 欧美日韩成人在线播放 | 18av在线视频| 天天影视色综合 | 制服丝袜自拍偷拍 | 亚洲免费不卡视频 | 久夜精品 | 婷婷丁香色综合狠狠色 | 亚洲福利久久 | 国产亚洲精品久久久久9999 | 九一黄色 | 亚洲最大的网站 | 日日噜噜噜夜夜狠狠久久蜜桃 | 少妇无码一区二区三区免费 | 少妇人妻激情乱人伦 | 久久久久亚洲波多野结衣 | 无码欧美毛片一区二区三 | а天堂中文官网 | 狠狠躁夜夜躁青青草原软件 | 99麻豆久久久国产精品免费 | 国内精品久久久人妻中文字幕 | 密臀av在线播放 | 日韩精品久久久久久久酒店 | 国内精品久久久久久影院 | 亚洲色婷婷久久精品av蜜桃 | 91视频地址 | 久久久久无码精品国产人妻无码 | 中文字幕2017| 国内精品久久久久影院蜜芽 | 午夜羞羞影院 | 国产在线无码不卡播放 | 国产精品入| 日韩精品亚洲人成在线 | 俄罗斯大荫蒂女人毛茸茸 | 久久这里只精品国产免费9 免费在线黄色网址 | 成人欧美一区二区三区黑人孕妇 | 97久久精品亚洲中文字幕无码 | 日韩乱码人妻无码超清蜜桃 | 国内精品久久久久影院日本资源 | 国产精品久久毛片 | 成熟交bgmbgmbgm在线 | 欧美成人欧美va天堂在线电影 | 国产曰批免费视频播放免费 | 久久久g0g0午夜无码精品 | 国产成人精品一区二区三区在线 | 麻豆日产精品卡2卡3卡4卡5卡 | 久久综合给合久久狠狠狠97色69 | 日产日韩亚洲欧美综合下载 | 久久综合九色综合欧美就去吻 | 色婷婷久久久swag精品 | 日韩精品一区二区在线观看 | 精品少妇人妻av免费久久洗澡 | 亚洲国产精品免费 | 青青青青在线 | 综合天堂av久久久久久久 | 成年人视频在线免费观看 | 国产乱人内谢69xxxx亚洲 | 国产麻豆精品一区二区 | 噜噜视频 | 亚洲一区在线视频观看 | 69久久成人精品 | 午夜无码乱码在线观看 | 无人乱码一区二区三区的观看模式 | 欧美aⅴ在线 | 视频一区二区无码制服师生 | 日本精品专区 | 国内精品久久久久影院薰衣草 | 亚洲图片一区二区三区 | 97精品一区二区三区 | 嫩草影院免费观看 | 欧美蜜桃网 | 护士脱了内裤让我爽了一夜视频 | 国产成人女人在线观看 | 精品九九九 | 动漫精品无码h在线观看 | 日韩精品免费一区二区三区竹菊 | 欧美性大战久久久久久久蜜桃 | 免费黄色小说网站 | 一日本道伊人久久综合影 | 亚洲宅男天堂 | 亚洲人 女学生 打屁股 得到 | 大乳丰满人妻中文字幕日本 | 一本色道久久综合 | 无码中文字幕热热久久 | 一级黄片毛片 | 小宝极品内射国产在线 | 国产在线一区二区三区 | 欧美成aⅴ人在线视频 | 国产精品欧美久久久久天天影视 | 大胆欧美gogo免费视频一二区 | 看一级黄色毛片 | 国产精品国产对白熟妇 | 无码h肉动漫在线观看 | 久在线中文字幕亚洲日韩 | 国产大学生自拍视频 | 超碰97国产在线 | 最近免费观看高清韩国日本大全 | 国精品人妻无码一区二区三区喝尿 | 欧美黄色小视频 | 欧美在线观看视频一区二区 | 和岳每晚弄的高潮嗷嗷叫视频 | 久久久噜噜噜久久免费 | 一本精品99久久精品77 | 国产成人理论在线视频观看 | 歪歪爽蜜臀av久久精品人人 | 日韩不卡视频在线观看 | 色婷婷六月亚洲综合香蕉 | 久久欧美国产伦子伦精品 | 91看大片| 中文字幕不卡在线 | 高清无码h版动漫在线观看 爽爽影院在线 | 国产色站 | 国产精品美女久久久浪潮av | 欧美日韩一区二区成人午夜电影 | av片一区 | 不卡av片| ts在线观看 | 6080yy伦理亚洲第一区 | 少妇太紧太爽又黄又硬又爽 | 爱爱精品屋| a毛片大片 | 冲田杏梨av一区二区三区 | 亚洲成免费 | 午夜少妇影院 | 天天拍夜夜添久久精品大 | 操比影院 | 国产欧美大片 | 欧美精品18videosex性欧美 | 欧美日韩国产精品一区二区 | 亚洲网站av | 秋霞鲁丝片av无码少妇 | 天堂乱码一二三区 | 中文字幕乱码人在线视频1区 | 双性总裁双腿呻吟大张bl | 日本一区二区三区精品福利视频 | 88国产精品 | 午夜福利伦伦电影理论片在线观看 | 日韩资源在线观看 | 亚洲区少妇熟女专区 | 亚洲午夜精品久久久久久人妖 | 国产 精品 丝袜 | 国产精品久久久久久久久久免费看 | 无码熟妇αⅴ人妻又粗又大 | 国产激情久久久久影院老熟女免费 | 久久久国产成人一区二区 | 日日碰狠狠躁久久躁9 | 无码高潮喷吹在线播放亚洲 | 精品中文视频 | 国产精品国产三级国产专播品爱网 | 曰本a∨久久综合久久 | 青青草狠狠干 | 特大黑人巨交吊性xxxx视频 | 亚洲国产中文曰韩丝袜 | 精品推荐国产精品店 | 亚洲欧美日韩久久精品 | 91最新在线| 99久久精品国产亚洲 | 成人理论视频 | 与子敌伦刺激对白播放 | 少妇人妻无码专区视频 | 99ri在线 | 中国熟妇毛多多裸交视频 | 欧美一级网址 | 美国免费黄色片 | 久久免费一区 | 乱淫a欧美裸体超级xxxⅹ | 欧洲综合视频 | 日韩欧美一区二区三区永久免费 | 日韩在线不卡av | 香蕉视频在线视频 | 熟妇与小伙子matur老熟妇e | 亚洲第一精品在线 | 岛国大片在线播放 | 国产成人免费在线视频 | 日韩视频免费看 | 日韩精品免费在线视频 | 中文字幕人妻丝袜二区 | 日日射av | 性色欲网站人妻丰满中文久久不卡 | 免费放黄网站在线播放 | wwwav国产| 天天操天天干天天舔 | 亚洲中文字幕精品久久 | 免费无码一区二区三区a片18 | 国产精品成人一区无码 | 99热国产在线观看 | 国产sm鞭打折磨调教视频 | 欧美 亚洲 另类 综合网 | 免费午夜激情 | 日韩在线一区视频 | 国产色站| 99色网站 | 中文字幕 亚洲精品 第1页 | 国产乱肉妇乱免费 | av免费在线观看网站 | 欧美性猛交xxxⅹ丝袜 | 日韩视频免费在线观看 | 伊伊人成亚洲综合人网 | 久久国产乱子伦精品免费午夜 | 久久精品免费一区二区喷潮 | 7777欧美成是人在线观看 | 999精彩视频 | 凹凸成人精品亚洲精品密奴 | 九一在线观看免费高清视频 | 亚洲图片激情文学 | 肥臀浪妇太爽了快点再快点 | 久啪视频 | 亚洲人成网站在线播放小说 | 色综合久久综合中文综合网 | 视色网 | 女同互慰高潮呻吟免费播放 | 99久久久久| 亚洲s码欧洲m码国产av | 亚洲日本香蕉视频 | 就爱操av | 九色视频国产 | 亚洲一区二区在线免费观看 | 国产97超碰人人做人人爱 | 91av毛片 | 在线观看免费亚洲 | 国产精品 欧美精品 | 饥渴少妇激情毛片视频 | 国产成人综合久久精品推下载 | 亚洲一区二区三区日本久久九 | 亚洲精品一二三区久久伦理中文 | 在线观看二区 | 免费看美女部位隐私网站 | 97久久超碰国产精品旧版麻豆 | 人人妻人人妻人人人人妻 | 91一区二区国产精华液 | 欧美人与动牲交大全免费 | 国产超碰精品 | 91久久偷偷做嫩草影院 | 亚洲夜夜性无码国产盗摄 | 亚洲超碰在线观看 | 欧美浮力第一页 | 亚洲一区二区三区av天堂 | 欧美a一级片 | 免费成人av片 | 成人一区二区三区四区 | 国产怡红院在线观看 | 狠狠色狠狠色综合网 | av观看网站 | 国产精品久久久久久久免费观看 | 国产精品第十页 | 老色批av | 视频一区免费 | 国内精品久久久久影院男同志 | 全部露出来毛走秀福利视频 | 无码骚夜夜精品 | 亚洲欧洲无码av一区二区三区 | av福利在线 | 北条麻妃一区二区三区在线 | 午夜精品久久久久久久久久久久久蜜桃 | 青青草华人在线视频 | 娇小xxxx性开放国产精 | 一本加勒比北条麻妃 | 亚洲精品一区二区三区四区乱码 | 久久99日| xxxx日本xxxx | 精品国产偷窥一区二区 | 国产精品无码无需播放器 | 加勒比一本heyzo高清视频 | 亚洲愉拍99热成人精品热久久 | 欧美三级网 | 久久99精品久久久大学生 | 中文字幕+乱码+中文字幕一区 | 亚洲一区国产精品 | 在线视频日韩欧美 | 国产一区二区福利 | 无码国产成人午夜电影在线观看 | 色爱无码av综合区 | 69风韵老熟女口爆吞精 | 久久天天躁狠狠躁夜夜av不卡 | 日日碰狠狠躁久久躁蜜桃 | 亚洲另类自拍丝袜第五页 | 日本中文字幕网站 | 中国少妇hd | 午夜小剧场 | 亚洲最新在线观看 | 91粉嫩萝控精品福利网站 | 色欲综合久久躁天天躁 | 成人网av | 久草精品视频 | 日本www在线观看 | 22222se男人的天堂 | 日本久久久影视 | 国产精品视频第一页 | 四虎亚洲精品高清在线观看 | 国产成人av一区二区三区在线观看 | 欧美性做爰猛烈叫床潮 | 欧美一区二区免费 | 一级黄色免费毛片 | 色噜噜狠狠色综合网图区 | av在线天堂| 久草在线在线视频 | 免费无码一区二区三区a片百度 | 人妻与子交毛片 | 久久精品操 | 一区二区三区不卡在线观看 | 国产+高潮+白浆+无码 | 中文乱码字慕人妻熟女人妻 | 九色porny丨国产首页注册 | 亚洲一区国产一区 | 国语对白嫖老妇胖老太 | www.久久亚洲 | 99福利| 久久久久久穴 | 黄在线看片免费人成视频 | 无翼乌工口全彩肉肉无遮挡18 | 免费欧美黄色 | 色欲av巨乳无码一区二区 | 亚洲国产成人在线 | 五色影院 | 日产日韩亚洲欧美综合在线 | 日韩久久精品一区 | 国产福利一区二区三区在线视频 | 在线看黄色av | 国产欧美在线观看不卡 | 日本一道本高清一区二区 | 久久96国产精品久久99软件 | 我要看免费的毛片 | 狠狠久 | 超碰在线c| 中文字幕亚洲制服在线看 | 国产xxx6乱为 | 日韩精品国产一区二区三区久久 | 久久久网址 | 一级大黄色片 | 在线天堂www天堂资源在线 | 人妻va精品va欧美va | 色大师在线观看免费播放 | 欧美久久久久久久久中文字幕 | 亚洲成av人在线观看天堂无码 | 久久99精品久久久久久久久久久久 | 国产成人精品一区二区秒拍 | 亚洲肥妇 | 欧美精品一区二区三区四区五区 | 亚洲国产天堂久久综合网 | 久久久久黄色 | 国产成人精品自产拍在线观看 | 成年人免费公开视频 | 久久成人福利 | 国产99视频在线观看 | 五月天堂av91久久久 | 国产chinasex对白videos麻豆 | 国产妇女乱码一区二区三区 | 黄色短片免费看 | 欧美特级毛片 | 精品久久久爽爽久久男人和男人 | 91嫩草精品少妇 | 色综合图区 | sese国产| 国产精品日韩欧美在线第3页天美 | 日日色综合 | 太粗太深了太紧太爽了动态图男男 | 在线精品视频一区二区三区 | 欧美激情精品成人一区 | 老湿机69福利区18禁网站 | 噼里啪啦完整高清观看视频 | 亚洲色成人网站www永久男男 | 3d动漫精品啪啪1区2区免费 | 国产成人午夜福利电影在线播放 | 激情五月婷婷综合 | 天天综合久久 | 怡红院成人av | 91丨九色丨喷水 | 欧美老妇与zozozo交 | 国产精品久久久久久亚洲 | 天天操天天操天天操天天操 | 成人夜间视频 | 免费看污又色又爽又黄 | 夫妻淫语绿帽对白 | 欧美久久久久久久久中文字幕 | 国产一区二区三区四区福利 | 一级肉体全黄裸片 | 国产粉嫩嫩00在线正在播放 | 国产精品福利影院 | 无码日韩做暖暖大全免费不卡 | 精品国产肉丝袜久久首页 | 97se狠狠狠狠狼鲁亚洲综合色 | 蜜臀av无码精品人妻色欲 | 国产乱人伦av在线a最新 | 无码不卡一区二区三区在线观看 | 女优av在线 | 天天摸天天看天天做天天爽 | 午夜一区二区三区 | 在线a亚洲v天堂网2019无码 | 亚洲你我色 | 日韩欧美国产视频 | 亚洲视频网站在线观看 | 亚欧日韩| 久久久久久久久久久久 | 小雪尝禁果又粗又大的视频 | 欧美日韩人成综合在线播放 | 亚洲无砖砖区一二区免费 | 55夜色66夜色国产精品视频 | 国产在线观看高清视频黄网 | 午夜性刺激在线观看 | 香蕉久久久久久av综合网成人 | 超碰97人人做人人爱少妇 | 国产精品亚洲综合一区二区三区 | 啪啪tv网站免费入口 | 国产精品校园春色 | 国产suv精品一区二区88l | 免费看黄在线看 | 在线天堂新版资源www在线 | 国产欧美一区二区三区在线 | 妞妞色www在线精品观看视频 | 日本精品午夜 | 国产高清一 | 午夜片神马影院福利 | 色偷偷888欧美精品久久久 | 狠狠狠色丁香婷婷综合激情 | 久久国内视频 | 中国老女人内谢69xxxx | 欧美极品少妇无套实战 | 国产一级桃视频播放 | 91国语对白 | 精品无码一区二区三区水蜜桃 | 日韩最新在线 | 亚洲国产精品无码中文字 | 亚洲最大成人免费视频 | 无码国模国产在线观看免费 | 国产精品视频2020年最新视频 | 深夜福利动态图 | 亚洲精品久久久久久下一站 | 午夜欧美艳情视频免费看 | 日本美妇| 国产成人精品电影在线观看 | 三级网站视频在在线播放 | 一区亚洲 | 欧美成人一区二区三区高清 | 东北少妇伦xxxxhd| 亚洲国产成人一区二区精品区 | 久久天天躁狠狠躁夜夜爽蜜月 | 欧美亚洲激情视频 | 九九99热久久精品在线6 | 欧美人与性动交α欧美精品 | 成人永久免费福利视频免费 | 香蕉视频在线观看www | 国产美女亚洲精品久久久99 | 国产一区二区三区久久久久久久久 | 色狗av| 任我爽精品视频在线播放 | 美女自拍视频 | 久久久精品久久久 | 色婷婷激情综合 | 自拍色图 | 无码精品人妻一区二区三区av | 婷婷五月六月综合缴情 | 91麻豆麻豆 | 又粗又大又硬又长又爽 | 黄色毛片黄色毛片 | 人人摸人人搞人人透 | 久久久噜噜噜久噜久久 | 欧美三级成人理伦 | 成人免费午夜 | 欧美日韩另类视频 | 日本无卡码高清免费v | 亚洲a毛片 | 色悠久久久久久久综合网伊人 | 天天做天天爱夜夜爽毛片l 打开每日更新在线观看 | 成人无码午夜在线观看 | av色蜜桃一区二区三区 | eeuss鲁片一区二区三区小说 | 午夜在线免费观看视频 | 久久亚洲中文无码咪咪爱 | 网曝91综合精品门事件在线 | 亚洲国产视频一区二区三区 | 荷兰性性xxxx生活舒服 | 人人cao | 流白浆视频 | 韩国无码av片午夜福利 | 欧美亚洲另类综合 | 少妇人妻陈艳和黑人教练 | 亚洲成人激情在线 | 亚洲成a人片77777国产 | 国产老熟女狂叫对白 | 亚洲日韩欧美在线观看一区二区三区 | 中日韩精品无码一区二区三区 | 最近中文字幕mv在线视频2018 | 欧美成人综合在线 | 欧美日韩综合视频 | 青青在线免费视频 | 久久综合久色欧美综合狠狠 | 国内精品久久久久久久久齐齐 | 亚洲乱码日产精品bd在线下载 | www.欧美色图| 777米奇色狠狠俺去啦奇米77 | 欧美顶级少妇做爰hd | 亚洲成人三级 | 国产aⅴ爽av久久久久电影渣男 | 人妻无码中字在线a | 在线 你懂的 | 日本无码人妻精品一区二区蜜桃 | 中文字幕亚洲高清 | 亚洲成本人无码薄码区 | 久久出品必属精品 | 欧美日韩在线视频播放 | 91最新地址 | 欧美疯狂做受xxxxx高潮 | 深夜福利在线免费观看 | 精品久久久无码中文字幕边打电话 | 丝袜足脚交在线播放 | 色爱情人网站 | 成人激情久久 | 一本大道大臿蕉视频无码 | 国精产品视频一二二区 | 无码中文av有码中文a | 亚洲一区在线看 | 中文字幕亚洲欧美日韩在线不卡 | 久久久久久久久久久久91 | 欧美三区在线 | 91麻豆麻豆 | 日产日韩亚洲欧美综合 | 国产日本卡二卡三卡四卡 | 亚洲精品午夜久久久 | 在线播放黄色av | 8×8x8×8人成免费视频 | 亚洲第一在线 | 午夜在线精品偷拍 | 亚洲九九| 中文字幕在线观看地址 | 一级免费看 | 九一午夜精品av | 久久久久久自慰出白浆 | 欧洲精品在线观看 | 久久久久久欧美 | 中文字幕免费在线视频 | 久久av无码精品人妻系列试探 | 国内精品久久久久久久影视红豆 | 国产成+人欧美+综合在线观看 | 18禁无遮挡啪啪无码网站 | 国产亚洲精品久久久久久打不开 | 国产精品高潮呻吟av久久黄 | 欧美黑人欧美精品刺激 | 黄瓜视频在线免费观看 | 男女搞鸡视频网站 | 久久久青青躁a∨免费观看 国产精品福利久久久 | 国产精品v欧美精品v日韩精品 | 亚洲成人一级毛片 | 久久人妻xunleige无码 | 精产国品一区二区三产区 | 无毒的av网站 | www久久久天天com | 欧美成人性生活片 | 国产成人福利视频 | 丁香婷婷无码不卡在线 | 欧美日韩久久精品 | 精品国内自产拍在线观看 | 青草国产精品久久久久久 | 国产精品亚洲а∨天堂123 | 精品黄色录像 | 亚洲欧美国产精品一区二区 | 亚洲综合av色婷婷国产野外 | 免费乱理伦片在线观看八戒 | 男人舔女人下面高潮视频 | 93精品国产乱码久久久 | 精品二| 波多野结衣有码 | 亚洲中文字幕日产乱码高清 | 国产亚洲人成在线播放 | 日韩在线专区 | 激情小说五月天 | 国产乱人伦真实精品视频 | 亚洲蜜桃v妇女 | 精产国品一二三产品蜜桃 | 国产精品高潮呻吟三区四区 | 一边吃奶一边做动态图 | 青草草在线视频永久免费 | 一本久久a久久精品亚洲 | 国产免费无遮挡吸乳视频 | 国产精品夜夜春夜夜爽久久 | 狠狠躁天天躁中文字幕无码 | 日韩精品视频免费专区在线播放 | 日本99视频 | 久久亚洲色www成人男男 | 免费久久久 | 久久不见久久见免费影院3 洞在线观看 | 免费国产黄网站在线观看可以下载 | www五月天婷婷 | 国产一区二区日韩 | 日韩高清在线播放 | 日韩欧美一区二区三区不学 | 亚洲黄a | 免费在线看黄网站 | 午夜黄色毛片 | 小13箩利洗澡无码视频免费网站 | 欧美色五月 | 国产成人无码a区在线观 | 精品国产肉丝袜在线拍国语 | 国产又粗又黄又爽又硬的视频 | 狠狠色噜噜狠狠狠狠色吗综合 | 亚洲天堂影院在线观看 | 成人国产精品免费视频 | 亚洲中文字幕无码日韩精品 | 久久福利片 | 亚洲国产成人久久精品大牛影视 | 亚洲欧美色图视频 | 人人妻人人爽人人爽 | 国产精品偷伦在线观看 | 国产成人无码精品久久久小说 | 欧美综合国产 | 黄色片a| 波多野结衣大战黑人8k经典 | 亚洲码中文 | 免费一级黄色片 | 国产成人mv视频在线观看 | 婷婷综合久久日韩一区 | 丁香五月网久久综合 | 亚洲国产成人精品无码区一本 | 国产吃奶在线观看 | 国内国内在线自偷第68页 | 日产无码中文字幕av | 五码亚洲 | 9l视频自拍九色9l视频九色 | 国产精品vⅰdeoxxxx国产 | 思九九爱九九 | 精品无码国产自产拍在线观看蜜 | 艹逼毛片| 国产精品久久无码一区二区三区网 | 欧美一区二区三区四区五区六区 | 二级黄色毛片 | 内射老阿姨1区2区3区4区 | 欧美图片激情小说 | 精品国产欧美一区二区三区不卡 | 精品少妇爆乳无码av无码专区 | 久草在线这里只有精品 | 色综合久久久 | 久久不见久久见www免费视频 | 男女69式互吃动态图在线观看 | 五月婷婷俺也去开心 | 国产另类xxxx| 中文字幕日韩无 | 内谢少妇 | 综合色视频 | 小雪好紧好滑好湿好爽视频 | 成人手机看片 | 人妻少妇精品视频三区二区一区 | 国产精品国产精品偷麻豆 | 精品久久久久久无码中文字幕一区 | 中文字幕精品国产 | 亚洲视频免费播放 | 久久天天躁狠狠躁夜夜不卡 | 日本欧美一区二区三区 | 久久精品国产清自在天天线 | 欧美成年黄网站色视频 | 国产91桃色在线观看网站 | 奶大女朋友2伦理 | 麻豆精品久久久久久久99蜜桃 | 亚洲欧洲久久av | 国产夜色av | 丁香久久| 婷婷五月六月综合缴情 | youjizz国产精品 | 丁香九月婷婷 | 自拍偷区亚洲综合美利坚 | 97偷拍少妇性按摩spa全程 | 日韩国产亚洲一区二区三区 | www.51色.com| 内射巨臀欧美在线视频 | 国产综合av一区二区三区无码 | 亚洲人成无码www久久久 | 国产精品99久久久久人中文网介绍 | 日日干日日插 | 色婷婷综合久久中文字幕雪峰 | 97在线精品视频 | 麻豆果冻传媒精品一区 | 久草网址 | 内射巨臀欧美在线视频 | 亚洲精品久久久久久无码色欲四季 | 9999精品免费视频 | 亚洲国产福利成人一区 | 亚洲精品国产精品乱码不99按摩 | 国产成人手机在线 | 一本大道一卡2卡三卡4卡国产 | 久久久av亚洲男天堂 | 日本精品一区二区 | 亚洲妇熟xxxx妇色黄 | 免费毛片基地 | 久视频精品线在线观看 | 52熟女露脸国语对白视频 | 日韩久久精品一区二区三区 | 天天干天天色综合 | 亚洲在线精品视频 | 午夜日韩视频 | 特黄一级视频 | 爱高潮www亚洲精品 亚洲欧美日韩中文无线码 天堂资源成人√ | 天堂网av2018| 两个人看的www在线观看 | 日韩久久激情 | 精久久| 成视人a免费观看 视频 | 国产18在线| 无码任你躁久久久久久老妇蜜桃 | 成人在线激情网 | 在线成人观看 | 亚洲国产成人精品福利 | 粉嫩av| 538在线一区二区精品国产 | 久久综合给合久久97色 | 国产仑乱 | 琪琪电影午夜理论片八戒八戒 | 色综久久综合桃花网国产精品 | 中文字幕乱妇无码av在线 | 国产一区二区三区四区福利 | 五月丁香拍拍激情综合 | 婷婷亚洲一区 | 天天射久久| 精品视频在线观看一区 | 中文在线8新资源库 | 欧美国产日韩a在线视频下载 | 在线三级网 | 精品无码成人网站久久久久久 | 日韩免费高清视频 | 老司机精品导航 | 欧美婷婷六月丁香综合 | 国精品无码一区二区三区在线a片 | 麻豆国产96在线日韩麻豆 | 日韩国产精品人妻无码久久久 | 麻豆国产成人av高清在线 | 真人抽搐一进一出gif | 人人草在线视频 | 天天看片中文字幕 | 欧美黑人又粗又大的性格特点 | 韩国三级无码hd中文字幕 | 成人无遮挡裸免费视频在线观看 | 国产精品亚洲视频 | 国产激情久久久久影院小草 | 免费亚洲视频 | 亚洲一区二区三区无码国产 | 国产污片在线观看 | 黄色网zhan | 亚洲欧美日韩国产综合精品二区 | 狼友av永久网站免费观看 | 亚洲精品视频观看 | 免费黄色毛片视频 | 亚洲精品久久久久久下一站 | 国产免费又色又爽粗视频 | 成人av中文字幕 | 天堂新版8中文在线8 | 在线se | 亚洲成av人片在线观看无码不卡 | 精品无码国产污污污免费网站 | 激情内射亚州一区二区三区爱妻 | www.99c0m成人| 扒开双腿猛进入喷水高潮视频 | 久久久久久久久久久久久9999 | 无码国产精品一区二区高潮 | 亚洲成av人最新无码 | 欧美日韩高清在线播放 | 免费成人高清在线视频 | 日本爽快片100色毛片视频 | 久久免费在线观看 | 中文字幕在线视频不卡 | a级毛片免费观看视频 | 在线精品自偷自拍无码 | 国内外免费激情视频 | youjizzcom中国少妇 | 欧美日日操 | 成人做爰100部片免费看网站 | 俄罗斯性欧美 | 蜜桃视频一区二区三区四区开放时间 | 国语自产精品视频在线看 | 日韩 国产 变态另类 欧美 | 久久精品网 | 热久久99热精品首页 | 亚洲国产精品无码第一区二区三区 | 日日摸夜夜添夜夜添国产精品 | 麻花传媒mv一二三区别在哪里看 | 一级做a视频 | 欧美成人综合在线 | 欧美在线视频一区 | 国产精品无码v在线观看 | 成人国产片女人爽到高潮 | 蜜桃网站入口在线进入 | 欧美激情一区在线 | 嫩草影院永久入口 | 被灌满精子的波多野结衣 | 久久69国产精品久久69软件 | 手机看片国产精品 | 韩国所有三级艳星列表 | 好大好湿好硬顶到了好爽视频 | 丁香婷婷激情综合俺也去 | 国产一区二区三区日韩 | 肉岳疯狂69式激情的高潮 | 在线播放日韩精品 | 在线不卡aⅴ片免费观看 | 91av视频网站 | 男人日女人的网站 | 成人免费无码大片a毛片小说 | 久久久久国产精品一区二区 | 日本亚洲vr欧美不卡高清专区 | 98久久 | www.99视频| www.91在线视频 | 欧美综合在线激情专区 | 丁香五月激情综合亚洲 | 免费看毛片的网站 | 手机在线观看av | 爱情岛论坛网亚洲品质 | 亚洲成av人最新无码不卡短片 | 国产熟女亚洲精品麻豆 | 日本大乳高潮视频在线观看 | 日日久 | 国产美女在线精品免费观看 | 特黄做受又大又粗又长大片 | 国产中文字二暮区 | 欧美色图在线视频 | 亚洲系列中文字幕 | 国产成人亚洲综合无码18禁h | av天堂午夜精品一区 | 天天操天天干天天爱 | 亚洲ⅴ欧洲第一的日产av | 免费在线观看黄 | 日韩性猛片aaaaaaa做受 | 日韩免费在线视频 | 欧美xxxx狂喷水欧美喷水 | 国产精品永久免费嫩草研究院 | 国色天香国产精品 | 国产成人av在线免播放观看新 | baoyu777.永久免费视频 | 成人激情视频在线 | 天天综合网久久综合免费人成 | 色婷婷色综合激情国产日韩 | 国产在线不卡人成视频 | 亚洲 欧美 日韩系列 | av免费网址 | 成人免费精品网站在线观看影片 | 成 人 黄 色 视频播放16 | 中国a一片一级一片 | 西西午夜无码大胆啪啪国模 | 国产精品久久毛片av大全日韩 | 嫩草国产露脸精品国产软件 | 国产av人人夜夜澡人人爽麻豆 | 一级片在线免费视频 | 亚洲天天摸日日摸天天欢 | 农村少妇无套内谢粗又长 | 狠狠色狠狠 | 亚洲乱论 | 国色天香中文字幕在线视频 | 婷婷色爱区综合五月激情 | 国产夫妻精品 | 黄网站色视频免费观看 | 亚洲天堂偷拍 | 精品无码久久久久久久久久 | 99久久久久国产精品免费人果冻 | 综合无码精品人妻一区二区三区 | 国产亚洲精品久久久999蜜臀 | 天干夜啦天干天干国产免费 | 国产精品亚洲产品一区二区三区 | 狠狠操狠狠摸 | 麻豆文化传媒精品一区二区 | 九草在线视频 | 操操操操操网 | 久久久亚洲欧洲日产国码农村 | 丝袜熟女国偷自产中文字幕亚洲 | 任你操久久 | 欧美成人性视频在线播放 | 四虎精品8848ys一区二区 | 国产偷人视频免费 | 久久第四色 | 不卡福利视频 | 一本久久a久久免费精品不卡 | 亚洲色播爱爱爱爱爱爱爱 | 99久久久无码国产精品试看 | 亚洲 日韩 国产 中文有码 | 狠狠做六月爱婷婷综合aⅴ 亚洲精品乱码久久久久蜜桃 | 久久久久久九九九九 | 97夜夜澡人人爽人人喊中国片 | 午夜爽爽久久久毛片 | 波多野结衣av一区二区全免费观看 | 日本特黄aaaaaa片在线观看 | 久久美女性网 | 欧美丰满高潮xxxx喷水动漫 | 中文字幕在线观看亚洲 | 国产精品麻豆va在线播放 | 国模私拍一区二区三区 | 免费无码av片在线观看网站 | 14萝自慰专用网站 | 少妇被猛烈进入到喷白浆 | 久久久国产精品网站 | 免费a级作爱片免费观看欧洲 | 国产99久久99热这里只有精品15 | 精品亚洲国产成人av不卡 | 亚洲va久久久噜噜噜久久狠狠 | 久久99国产亚洲高清观看首页 | 国产成人精品无码一区二区三区 | 欧美人与动牲猛交xxxxbbbb | 日韩国产欧美精品 | 日本午夜无人区毛片私人影院 | 一区二区动漫 | 亚洲人妖视频 | 熟妇人妻久久中文字幕 | www.亚洲精品| 久久国产精品日本波多野结衣 | 明星大尺度激情做爰视频 | 欧美日韩精品亚洲精品 | 白嫩情侣偷拍呻吟刺激 | 久久大学生 | 伊人无码一区二区三区 | 国产精品99久久99久久久 | 天天操天天干天天舔 | 久久人妻少妇嫩草av蜜桃 | 日本久久久久久久久 | 美女三区| 天天爱天天操天天射 | 成人免费看片又大又黄 | 狠狠插狠狠操 | 三级中文字幕永久在线 | 久久精品女人天堂av免费观看 | а 天堂 在线 | 麻豆一区二区三区在线观看 | 国产精品偷伦视频免费观看国产 | 久久99国产精品久久99 | 亚洲国产一区二区三区日本久久久 | 国产精品久久久久久爽爽爽 | 国产午夜精品无码理论片 | 97久久人人超碰caoprom欧美 | 激情婷婷小说 | 国产福利一区二区三区高清 | 精品一区二区三区四区 | 视频国产激情 | 日韩3页| 亚洲精品无码成人aaa片 | 一区二区无码免费视频网站 | 亚洲精品国产suv | 日韩中文高清在线专区 | 日本区一区二 | 国产精品久久久爽爽爽麻豆色哟哟 | 婷婷色中文字幕 | 美国一级大黄一片免费的网站 | 99精品国产福利一区二区 | 深夜福利成人 | 欧美久久久久久久久久 | 亚洲卡1卡2卡新区网站 | 激情欧美一区二区 | 国产成人av在线播放影院 | 农村真人裸体丰满少妇毛片 | 91久久国产精品 | wwwxxx亚洲| 免费看av毛片 | 日韩卡1卡2 卡三卡免费 | 亚洲成年网 | 美女露出奶头扒开尿口免费网站 | 欧美日韩中文在线视频 | 老熟妇毛片 | 99在线视频 | 传媒 | www.69国产| 日日噜噜夜夜狠狠久久丁香五月 | 亚洲精品美女久久久久9999 | 国产精品视频白浆免费视频 | 99精品久久久久久中文字幕 | 性一交一乱一乱一视频 | 丁香激情综合 | 欧产日产国产蜜网站 | 欧美a√在线 | 国产色综合久久无码有码 | 日日摸天天摸爽爽狠狠97 | 性无码专区一色吊丝中文字幕 | 亚洲国产成人久久综合 | 妓女爽爽爽爽爽妓女8888 | 国产免费网站看v片在线无遮挡 | 成人aaaaa日本黄绝录象片 | 国产八十老太另类 | 18禁区美女免费观看网站 | 亚洲日本精品国产第一区二区 | 亚洲91网| 久久国产原创 | 日本三级小视频 | 亚洲精品美女久久久久网站 | 99久久婷婷国产综合精品青牛牛 | 国产精品偷伦精品视频 | 夜晚成人18禁区导航网站 | 少妇娇喘呻吟出水好深一区二区 | 色婷婷综合五月 | 在线观看黄色国产 | 免费国产人成18在线观看 | 日本成熟少妇喷浆视频 | 中文字幕无码人妻少妇免费 | 狠狠88综合久久久久综合网 | 日本三级网络 | 3d成人h动漫网站入口 | 久久久久九九精品影院 | 欧美涩涩涩| 青春草在线视频免费观看 | 日韩精品中文字幕无码一区 | 亚洲精品美女在线观看 | 无遮挡又黄又刺激又爽的视频 | 成全世界免费高清观看 | 午夜国产精品国产自线拍免费人妖 | 无码啪啪熟妇人妻区 | 午夜片神马影院福利 | 乌克兰粉嫩xxx极品hd | 粉嫩av国产一区二区三区 | 日日夜夜综合网 | 国产成人av片免费 | 五月婷网站 | 高清精品xnxxcom | 亚洲精品成人av在线观看爽翻天 | 午夜骚影| 亚洲熟女少妇精品 | 妺妺窝人体色www聚色窝仙踪 | 国产精品宾馆国内精品酒店 | 精品丝袜人妻久久久久久 | 国产精品aⅴ在线观看 | 人妻少妇偷人无码视频 | 人妻丰满熟妇ⅴ无码区a片 黄色片观看 | 亚洲成人在线视频播放 | 欧美激情国产一区 | 欧美人与动牲交a欧美精品 亚洲v在线观看 | 成人免费久久网 | 日韩人妻无码精品系列专区 | 国产乱来乱子视频 | 久久国产激情 | 在线精品动漫一区二区无码 | 18禁美女黄网站色大片在线 | 老司机久久一区二区三区 | 精品久久久精品 | 亚洲成人福利 | 国产午夜精品久久久久久久久久 | 国产成人精品999在线观看 | 拍真实国产伦偷精品 | 欧美视频区高清视频播放 | 蜜国产精品jk白丝av网站 | 亚洲精品国产精品乱码不卡√香蕉 | 日本xxxx裸体xxxx视频大全 | 男人的天堂av高清在线 | 牲高潮99爽久久久久777 | 精品厕所偷拍各类美女tp嘘嘘 | 久久亚洲精品中文字幕无码 | 九热在线视频 | 天堂无乱码 | www.久久爱.cn | www.youjizz.com中国版 | 欧美激情综合色综合啪啪五月 | 韩日综合成人中文字幕 | 蜜臀91丨九色丨蝌蚪中文 | 天天干夜夜欢 | 在线观看黄色免费网站 | 国产亚洲欧美看国产 | 久久久久女人精品毛片九一 | 手机在线观看av片 | 精品精品国产自在97香蕉 | 国产日韩欧美精品一区二区三区 | 久久www成人片免费看 | 精品国产自在精品国产浪潮 | 欧美另类人妖 | 国产超碰在线 | 狠狠色丁香久久婷婷综合五月 | 日日操夜夜 | 妇乱子伦精品小说网 | 国产欧美熟妇另类久久久 | 国产色片在线观看 | 伊甸园永久免费网站 | 高清国产av一区二区三区 | 国产精品九九九 | 中文字幕无码免费久久9一区9 | 美女又大又黄www免费网站 | 欧美国产日产一区二区 | 久久欧美一区二区三区性生奴 | 日韩在线播放视频 | 少妇午夜三级伦理影院播放器 | 日本老肥婆bbbwbbbwzr | 五月婷婷久久草丁香 | 天天综合久久综合 | 亚洲自拍偷窥 | 亚洲色大成网站www永久一区 | 国产成人综合久久久久久 | 色综合久久中文娱乐网 | 日本在线视频二区 | 亚洲国产系列 | 亚洲中文字幕无码人在线 | 尤妮丝大尺度av在线播放 | 日本一区二区三区免费视频 | 国产精品久久久久久久久久久新郎 | 97在线视频人妻无码 | 久久久久久免费 | 囯产精品一品二区三区 | 欧美精品一区二区三区在线播放 | 国产1区2区3区| 天天色影网 | 性一交一伦一视一频 | 天天爽天天爽夜夜爽毛片 | 影音先锋午夜 | 超碰在线观看97 | 四虎影视网址 | 黑人玩弄漂亮少妇高潮大叫 | 狠狠躁夜夜躁人蜜臀av小说 | 2018年秋霞无码片 | 欧美日韩高清不卡 | 午夜激情福利在线 | 999国内精品永久免费观看 | 无码精品人妻一区二区三区人妻斩 | 久久久亚洲精品一区二区三区浴池 | 国产九九热 | www国产精品内射 | 日韩乱码人妻无码中文字幕视频 | 夜夜躁狠狠躁日日躁202 | 亚洲 春色 古典 小说 自拍 | 白嫩少妇各种bbwbbw | 国产精品国产三级国产有见不卡 | 少妇高潮惨叫久久久久久 | 亚洲丁香婷婷综合久久 | 美女的奶胸大爽爽大片 | 男人的av在线 | 日韩激情无码不卡码 | 国产成人av一区二区三区在线 | 国产寡妇婬乱a毛片视频 | av网址观看 | 婷婷丁香六月激情综合在线人 | 男人和女人高潮做爰视频 | 日韩一区二区三区无码人妻视频 | av2017天堂网 | 99久久国产综合精品尤物酒店 | 国产亚洲papapa | 性色av一区二区三区 | 国产v亚洲∨无码天堂 | 欧美不卡高清一区二区三区 | 鲁大师影院在线观看 | 国产日产高清dvd碟片 |