两个人的电影免费视频_国产精品久久久久久久久成人_97视频在线观看播放_久久这里只有精品777_亚洲熟女少妇二三区_4438x8成人网亚洲av_内谢国产内射夫妻免费视频_人妻精品久久久久中国字幕

更新應(yīng)用程序的方法及裝置制造方法

文檔序號:6632055閱讀:315來源:國知局
更新應(yīng)用程序的方法及裝置制造方法
【專利摘要】本公開實施例提供了更新應(yīng)用程序的方法及裝置,其中的方法包括:獲取終端設(shè)備處理器的核數(shù);根據(jù)所述核數(shù)在第一語言環(huán)境下開啟多個更新線程;在每個更新線程中,通過預(yù)設(shè)的接口調(diào)用由第二語言實現(xiàn)的更新函數(shù)以對第一列表中的一個應(yīng)用程序進行更新,并將所述被更新的應(yīng)用程序從第一列表移至第二列表;在收到一個更新線程對一個應(yīng)用程序更新完成的響應(yīng)后,將更新完成的應(yīng)用程序從第二列表中移除。本公開中使用預(yù)設(shè)的接口例如JNI接口,使一種語言下的更新線程可以直接調(diào)用另一種語言下的更新函數(shù),不但避免了因建立socket連接而導(dǎo)致的時間及系統(tǒng)資源消耗,且可同時進行多線程更新,大大提高了應(yīng)用程序同時需要更新時的更新效率。
【專利說明】更新應(yīng)用程序的方法及裝置

【技術(shù)領(lǐng)域】
[0001] 本公開涉及終端設(shè)備程序處理【技術(shù)領(lǐng)域】,尤其涉及更新應(yīng)用程序的方法及裝置。

【背景技術(shù)】
[0002] 隨著智能手機、平板電腦等終端設(shè)備的硬件配置不斷提升、功能日益豐富,用戶對 這些終端設(shè)備的需求也在增強,往往會在終端設(shè)備中安裝各種各樣的應(yīng)用程序,這就使得 終端設(shè)備上的應(yīng)用程序越來越多。
[0003] 并且,為了提升用戶體驗,移動終端的操作系統(tǒng)也會經(jīng)常進行升級操作。在 Android系統(tǒng)中,每進行一次系統(tǒng)升級,會對操作系統(tǒng)中所有的應(yīng)用程序進行更新(也可稱 為優(yōu)化),以使其在升級后的操作系統(tǒng)中可以快速運行。其中,對應(yīng)用程序的更新操作以 0DEX操作為主。這樣每次在系統(tǒng)升級完畢后的第一次開機啟動時,因為要依次更新眾多應(yīng) 用程序,會導(dǎo)致啟動過程非常慢,耗費很長的時間。
[0004] 以安裝了 Android安卓系統(tǒng)的手機為例,安卓系統(tǒng)通常使用Java語言作為開發(fā)工 具,但由于某些原因,應(yīng)用程序更新的底層代碼會使用Native語言(例如C/C++語言,C/ C++等語目相對于Java來講可稱為Native語目,或者原生語目、本地語目)來實現(xiàn),所以 應(yīng)用程序的更新就會涉及到Native語言層與Java層之間的通信。在相關(guān)技術(shù)中,安卓系 統(tǒng)采用的是socket通信機制,即在Java層與Native語言層之間建立socket連接,通過 socket連接實現(xiàn)應(yīng)用程序的更新。然而,建立socket連接本身就會消耗一定的時間及系統(tǒng) 資源,而且該通信機制也決定了更新過程只能是單線程執(zhí)行,即逐一更新各應(yīng)用程序,所以 效率很低,造成系統(tǒng)升級完畢后的第一次開機啟動過程非常耗時。


【發(fā)明內(nèi)容】

[0005] 為克服相關(guān)技術(shù)中存在的問題,本公開提供更新應(yīng)用程序的方法及裝置,以解決 同時更新多個應(yīng)用程序時耗時較長的問題。
[0006] 根據(jù)本公開實施例的第一方面,提供一種更新應(yīng)用程序的方法,所述方法包括:
[0007] 獲取第一列表,所述第一列表為待更新的應(yīng)用程序的列表;
[0008] 創(chuàng)建第二列表,所述第二列表為正在更新的應(yīng)用程序的列表;
[0009] 獲取終端設(shè)備處理器的核數(shù);
[0010] 根據(jù)所述核數(shù)在第一語言環(huán)境下同時開啟多個更新線程;
[0011] 在每個所述更新線程中,通過預(yù)設(shè)的接口調(diào)用由第二語言實現(xiàn)的更新函數(shù)以對所 述第一列表中的一個應(yīng)用程序進行更新,并將所述被更新的應(yīng)用程序從所述第一列表移至 所述第二列表;
[0012] 在收到一個更新線程對一個應(yīng)用程序更新完成的響應(yīng)后,將所述更新完成的應(yīng)用 程序從所述第二列表中移除。
[0013] 可選的,所述第一語言為Java,所述第二語言為C/C++,所述預(yù)設(shè)的接口為Java本 地接口 JNI。
[0014] 可選的,所述通過預(yù)設(shè)的接口調(diào)用由第二語言實現(xiàn)的更新函數(shù),包括:
[0015] 在負責應(yīng)用程序更新的Java類中加載指定C文件編譯后生成的類庫,其中所述 c文件中含有所述使用C/C++實現(xiàn)的更新函數(shù)且所述C文件中引入了 JNI. h頭文件,所述 Java類中聲明了所述更新函數(shù);
[0016] 在所述Java類的所述更新線程中,直接調(diào)用所述更新函數(shù)。
[0017] 可選的,所述多個更新線程的個數(shù)為:
[0018] 如果 M> = N,則 a = N ;如果 M〈N,則 a = Μ ;
[0019] 其中,a為所述多個更新線程的個數(shù),Μ為所述第一列表中應(yīng)用程序的個數(shù),Ν為所 述處理器的核數(shù)。
[0020] 可選的,所述方法還包括:
[0021] 在收到一個更新線程對一個應(yīng)用程序更新完成的響應(yīng)后,判斷所述第一列表中是 否還有應(yīng)用程序;
[0022] 如果所述第一列表中沒有應(yīng)用程序,則結(jié)束當前的更新線程;
[0023] 如果所述第一列表中仍有應(yīng)用程序,則繼續(xù)在所述第一列表中選取一個應(yīng)用程序 通過當前的更新線程進行更新。
[0024] 根據(jù)本公開實施例的第二方面,提供一種更新應(yīng)用程序的裝置,所述裝置包括:
[0025] 列表操作模塊,用于獲取第一列表,所述第一列表為待更新的應(yīng)用程序的列表;創(chuàng) 建第二列表,所述第二列表為正在更新的應(yīng)用程序的列表;將正在被更新的應(yīng)用程序從所 述第一列表移至所述第二列表;以及,在收到一個更新線程對一個應(yīng)用程序更新完成的響 應(yīng)后,將所述更新完成的應(yīng)用程序從所述第二列表中移除;
[0026] 線程控制模塊,用于獲取終端設(shè)備處理器的核數(shù);根據(jù)所述核數(shù)在第一語言環(huán)境 下同時開啟多個更新線程;
[0027] 更新執(zhí)行模塊,用于在每個所述更新線程中,通過預(yù)設(shè)的接口調(diào)用由第二語言實 現(xiàn)的更新函數(shù)以對所述第一列表中的一個應(yīng)用程序進行更新。
[0028] 可選的,所述第一語言為Java,所述第二語言為C/C++,所述預(yù)設(shè)的接口為Java本 地接口 JNI。
[0029] 可選的,所述更新執(zhí)行模塊包括:
[0030] 調(diào)用準備子模塊,用于在負責應(yīng)用程序更新的Java類中加載指定C文件編譯后生 成的類庫,其中所述C文件中含有所述使用C/C++實現(xiàn)的更新函數(shù)且所述C文件中引入了 JNI. h頭文件,所述Java類中聲明了所述更新函數(shù);
[0031] 調(diào)用執(zhí)行子模塊,用于在所述Java類的所述更新線程中,直接調(diào)用所述更新函 數(shù)。
[0032] 可選的,所述線程控制模塊還用于:
[0033] 在收到一個更新線程對一個應(yīng)用程序更新完成的響應(yīng)后,判斷所述第一列表中是 否還有應(yīng)用程序;如果所述第一列表中沒有應(yīng)用程序,則結(jié)束當前的更新線程;如果所述 第一列表中仍有應(yīng)用程序,則繼續(xù)在所述第一列表中選取一個應(yīng)用程序通過當前的更新線 程進行更新。
[0034] 根據(jù)本公開實施例的第三方面,提供一種更新應(yīng)用程序的裝置,包括:
[0035] 處理器;
[0036] 用于存儲處理器可執(zhí)行指令的存儲器;
[0037] 其中,所述處理器被配置為:
[0038] 獲取第一列表,所述第一列表為待更新的應(yīng)用程序的列表;
[0039] 創(chuàng)建第二列表,所述第二列表為正在更新的應(yīng)用程序的列表;
[0040] 獲取終端設(shè)備處理器的核數(shù);
[0041] 根據(jù)所述核數(shù)在第一語言環(huán)境下同時開啟多個更新線程;
[0042] 在每個所述更新線程中,通過預(yù)設(shè)的接口調(diào)用由第二語言實現(xiàn)的更新函數(shù)以對所 述第一列表中的一個應(yīng)用程序進行更新,并將所述被更新的應(yīng)用程序從所述第一列表移至 所述第二列表;
[0043] 在收到一個更新線程對一個應(yīng)用程序更新完成的響應(yīng)后,將所述更新完成的應(yīng)用 程序從所述第二列表中移除。
[0044] 本公開的實施例提供的技術(shù)方案可以包括以下有益效果:
[0045] 在本公開實施例中,不再使用socket通信技術(shù),也即并未在兩種語言之間建立 socket連接,而是使用預(yù)設(shè)的接口,例如JNI接口,使一種語言下的更新線程可以直接調(diào)用 另一種語言下的更新函數(shù),從而不但避免了因建立socket連接而導(dǎo)致的時間及系統(tǒng)資源 的消耗,而且將單線程的更新轉(zhuǎn)變?yōu)橥瑫r進行的多線程更新,大大提高了眾多應(yīng)用程序同 時需要更新時的更新效率,縮短了開機啟動時間。
[0046] 應(yīng)當理解的是,以上的一般描述和后文的細節(jié)描述僅是示例性和解釋性的,并不 能限制本公開。

【專利附圖】

【附圖說明】
[0047] 此處的附圖被并入說明書中并構(gòu)成本說明書的一部分,示出了符合本發(fā)明的實施 例,并與說明書一起用于解釋本發(fā)明的原理。
[0048] 圖1是根據(jù)一示例性實施例示出的一種更新應(yīng)用程序的方法的流程圖;
[0049] 圖2是根據(jù)一示例性實施例示出的一種更新應(yīng)用程序的方法的流程圖;
[0050] 圖3是根據(jù)一示例性實施例示出的一種更新應(yīng)用程序的方法的流程圖;
[0051] 圖4是相關(guān)技術(shù)中更新應(yīng)用程序的不意圖;
[0052] 圖5是根據(jù)一示例性實施例示出的更新應(yīng)用程序的原理圖;
[0053] 圖6是根據(jù)一示例性實施例示出的一種更新應(yīng)用程序的方法的流程圖;
[0054] 圖7是根據(jù)一示例性實施例示出的一種更新應(yīng)用程序的裝置的框圖;
[0055] 圖8是根據(jù)一示例性實施例示出的一種更新應(yīng)用程序的裝置的框圖;
[0056] 圖9是根據(jù)一示例性實施例示出的一種用于更新應(yīng)用程序的裝置的框圖。

【具體實施方式】
[0057] 這里將詳細地對示例性實施例進行說明,其示例表示在附圖中。下面的描述涉及 附圖時,除非另有表示,不同附圖中的相同數(shù)字表示相同或相似的要素。以下示例性實施例 中所描述的實施方式并不代表與本發(fā)明相一致的所有實施方式。相反,它們僅是與如所附 權(quán)利要求書中所詳述的、本發(fā)明的一些方面相一致的裝置和方法的例子。
[0058] 圖1是根據(jù)一示例性實施例示出的一種更新應(yīng)用程序的方法的流程圖。該方法可 以用于手機、平板電腦等終端設(shè)備。參見圖1所示,該方法可以包括:
[0059] 在步驟S101中,獲取第一列表,所述第一列表為待更新的應(yīng)用程序的列表;創(chuàng)建 第二列表,所述第二列表為正在更新的應(yīng)用程序的列表。
[0060] 在本實施例中,因為待更新的應(yīng)用程序眾多,所以使用這兩個列表進行管理,第一 列表用于存儲待更新應(yīng)用程序的相關(guān)信息,第二列表用于存儲正在更新的應(yīng)用程序的相關(guān) 信息。在更新過程中,眾多待更新應(yīng)用程序的相關(guān)信息會從第一列表逐漸轉(zhuǎn)移至第二列表, 從而使系統(tǒng)可以掌控更新的過程。
[0061] 在步驟S102中,獲取終端設(shè)備處理器的核數(shù);根據(jù)所述核數(shù)在第一語言環(huán)境下同 時開啟多個更新線程。
[0062] 本實施例中使用多線程進行并行更新,以提高更新效率。
[0063] 作為示例,所述多個更新線程的個數(shù)為:
[0064] 如果 M> = N,則 a = N ;如果 M〈N,則 a = Μ ;
[0065] 其中,a為所述多個更新線程的個數(shù),Μ為所述第一列表中應(yīng)用程序的個數(shù),Ν為所 述處理器的核數(shù)。
[0066] 在步驟S103中,在每個所述更新線程中,通過預(yù)設(shè)的接口調(diào)用由第二語言實現(xiàn)的 更新函數(shù)以對所述第一列表中的一個應(yīng)用程序進行更新,并將所述被更新的應(yīng)用程序從所 述第一列表移至所述第二列表。
[0067] 在本實施例中,使用預(yù)設(shè)的接口實現(xiàn)兩種語言環(huán)境的融合。對于預(yù)設(shè)的接口的具 體實現(xiàn)形式本實施例并不進行限制。
[0068] 作為示例,在一種場景下,所述第一語言為Java,所述第二語言為C/C++,所述預(yù) 設(shè)的接口為Java本地接口 JNI。
[0069] JNI (Java Native Interface, Java 本地接口)是 Java 提供的一個重要的功能, 它使得用諸如C/C++等語言編寫的代碼可以與運行于JVM(Java Virtual Machine, Java 虛擬機)中的Java代碼集成。JNI能滿足開發(fā)者在Java代碼中訪問Native模塊的需求。 JNI的出現(xiàn)使得開發(fā)者既可以利用Java語言跨平臺、類庫豐富、開發(fā)便捷等特點,又可以利 用Native語言的高效。
[0070] 實際上,JNI是JVM實現(xiàn)中的一部分,因此Native語言和Java代碼都運行在JVM 的宿主環(huán)境(Host Environment)。此外,JNI是一個雙向的接口:開發(fā)者不僅可以通過JNI 在Java代碼中訪問Native模塊,還可以在Native代碼中嵌入一個JVM,并通過JNI訪問運 行于其中的Java模塊。可見,JNI擔任了一個橋梁的角色,它將JVM與Native模塊聯(lián)系起 來,從而實現(xiàn)了 Java代碼與Native代碼的互訪。
[0071] 在步驟S104中,在收到一個更新線程對一個應(yīng)用程序更新完成的響應(yīng)后,將所述 更新完成的應(yīng)用程序從所述第二列表中移除。
[0072] 參見圖2所示,在本實施例或本公開其他某些實施例中,所述通過預(yù)設(shè)的接口調(diào) 用由第二語言實現(xiàn)的更新函數(shù),包括:
[0073] 在步驟S201中,在負責應(yīng)用程序更新的Java類中加載指定C文件編譯后生成的 類庫,其中所述C文件中含有所述使用C/C++實現(xiàn)的更新函數(shù)且所述C文件中引入了 JNI. h頭文件,所述Java類中聲明了所述更新函數(shù)。
[0074] 在步驟S202中,在所述Java類的所述更新線程中,直接調(diào)用所述更新函數(shù)。
[0075] 參見圖3所示,在本實施例或本公開其他某些實施例中,所述方法還可以包括:
[0076] 在步驟S301中,在收到一個更新線程對一個應(yīng)用程序更新完成的響應(yīng)后,判斷所 述第一列表中是否還有應(yīng)用程序;
[0077] 在步驟S302中,如果所述第一列表中沒有應(yīng)用程序,則結(jié)束當前的更新線程;
[0078] 在步驟S303中,如果所述第一列表中仍有應(yīng)用程序,則繼續(xù)在所述第一列表中選 取一個應(yīng)用程序通過當前的更新線程進行更新。
[0079] 在本實施例中,并未使用socket通信技術(shù),也即并未在兩種語言之間建立socket 連接,而是使用預(yù)設(shè)的接口,例如JNI接口,使一種語言下的更新線程可以直接調(diào)用另一種 語言下的更新函數(shù),從而不但避免了因建立socket連接而導(dǎo)致的時間及系統(tǒng)資源的消耗, 而且將單線程的更新轉(zhuǎn)變?yōu)橥瑫r進行的多線程更新,大大提高了眾多應(yīng)用程序同時需要更 新時的更新效率,縮短了開機啟動時間。
[0080] 下面結(jié)合一個具體場景對本公開的方案作進一步說明。
[0081] 在安卓系統(tǒng)下,應(yīng)用程序的APK的classes, dex文件中含有應(yīng)用程序的運行代碼。 為了提高應(yīng)用程序的啟動、運行的速度,可以使用0DEX技術(shù)。所謂0DEX技術(shù),簡言之即將 classes, dex中的代碼預(yù)先提取出來生成一個dex文件。
[0082] 當系統(tǒng)升級后,原先提取生成的dex文件已失效,需要重新進行提取,這一重新提 取的過程即上文所說的應(yīng)用程序的更新。該提取過程涉及到Java層與C層之間的通信。
[0083] 在相關(guān)技術(shù)中,Java層與C層之間的通信使用了 socket技術(shù)。作為示例可參見 圖4所示。在圖4中,Java層(相當于socket通信中的客戶端)與C層(相當于socket 通信中的服務(wù)器端)分別創(chuàng)建socket ;C層在執(zhí)行了 "bindO "等一系列操作之后等待 Java層的連接Java層通過"Connect ()"請求連接;雙方在經(jīng)過了請求(request)及應(yīng)答 (response)之后連接成功(connected),然后進行讀寫操作,以對應(yīng)用程序進行逐個更新; 最后關(guān)閉socket。
[0084] 建立socket連接本身就會消耗一定的時間及系統(tǒng)資源,而且該通信機制也決定 了更新過程只能是單線程執(zhí)行,即逐一更新各應(yīng)用程序,所以效率很低,造成系統(tǒng)升級完畢 后的第一次開機啟動過程非常耗時。
[0085] 在本實施例中,不再使用socket,而是使用JNI??蓞⒁妶D5所示。
[0086] 圖5是根據(jù)一示例性實施例示出的更新應(yīng)用程序的原理圖:
[0087] 在圖5中,首先手機在啟動時會開啟用于應(yīng)用程序更新的Android服務(wù) (PackageManagerService),獲取需要更新的應(yīng)用程序列表,然后根據(jù)CPU核數(shù)開啟多個線 程,在每個線程中均調(diào)用更新應(yīng)用程序的函數(shù),也即通過JNI調(diào)用C語言實現(xiàn)的native函 數(shù)(desopt函數(shù)),然后進行應(yīng)用程序的更新。
[0088] 具體的,參見圖6所示,可以包括:
[0089] 在步驟S601中,在用于進行應(yīng)用程序更新的Java類中聲明一個native函數(shù)。
[0090] 例如:
[0091] public native int doDexOpt(String apkPath, String uid, int isPublic)
[0092] 在步驟S602中,使用C/C++語言實現(xiàn)上述native函數(shù)。這個native函數(shù)用于完 成對應(yīng)用程序進行更新的具體工作。
[0093] 在步驟S603中,創(chuàng)建JNI目錄(如果工程已有該項目,則可以直接使用),在JNI 目錄下創(chuàng)建一個C文件,并在該C文件中包含上述native函數(shù),并引入jni. h頭文件。
[0094] 作為示例,倉ll建的c文件可以為update_app. c文件,實現(xiàn)如下:
[0095] ttinciude <jni.h> static int doDexOpt: (JXfEnv 承 env5 jobject object, jstringapk path, jstringuid, j 1 nt is___pub 11c, char reply[ΚΚΡΙΛ.......MAXj) { //實現(xiàn)方法參考commands, c文件中的 // int dcxopt(const char *apk------path, uid------t uid, int is------public) }
[0096]
[0097] 在步驟S604中,修改Android, mk文件,從而使上述c文件也能被編譯。編譯后會 自動生成一個· so文件。
[0098] 作為示例,可以在Android, mk文件中修改添加下面兩句
[0099] L0CAL_C_INCLUDES: = $(L0CAL_PATH)/include
[0100] L0CAL_SRC_FILES+ = jni/update_app. c
[0101] 編譯生成 libupdate_app. so 文件。
[0102] 在步驟S605中,在上述用于進行應(yīng)用程序更新的Java類中,加載所述c文件。這 樣便可以直接調(diào)用上述native函數(shù)對應(yīng)用程序進行更新。
[0103] 例如,在類開始處添加上述c文件,去掉文件后綴,即
[0104] static {
[0105] System. loadLibrary("update_app");
[0106] }
[0107] 在步驟S606中,系統(tǒng)啟動過程中,得到待更新的應(yīng)用程序的列表x,并創(chuàng)建正在更 新中的應(yīng)用列表y。例如待的應(yīng)用程序有Μ個。
[0108] 在步驟S607中,得到CPU的核數(shù)。例如核數(shù)有Ν個。
[0109] 在步驟S608中,同時開啟a個線程,在每個線程中,將相應(yīng)應(yīng)用程序的apk路徑等 信息作為參數(shù),直接調(diào)用上述native函數(shù),從而實現(xiàn)同時對a個應(yīng)用程序進行更新;在對某 一個應(yīng)用程序開始更新時,將該應(yīng)用程序從X列表中移除,并且加入y列表。
[0110] 其中a的計算算法可以是:
[0111] if M> = N, then a = N, if M<N, then a = M
[0112] 在步驟S609中,收到某個應(yīng)用程序更新完成的響應(yīng)后,從正在更新的應(yīng)用列表y 中移除該應(yīng)用程序的相關(guān)信息。判斷是否仍有待更新的應(yīng)用程序,如果沒有,結(jié)束當前線 程,如果有,則發(fā)起對另一個應(yīng)用程序的更新操作。
[0113] 圖7是根據(jù)一示例性實施例示出的一種更新應(yīng)用程序的裝置的框圖。該裝置可以 用于手機、平板電腦等終端設(shè)備。參見圖7所示,該裝置可以包括:
[0114] 列表操作模塊701,用于獲取第一列表,所述第一列表為待更新的應(yīng)用程序的列 表;創(chuàng)建第二列表,所述第二列表為正在更新的應(yīng)用程序的列表;將正在被更新的應(yīng)用程 序從所述第一列表移至所述第二列表;以及,在收到一個更新線程對一個應(yīng)用程序更新完 成的響應(yīng)后,將所述更新完成的應(yīng)用程序從所述第二列表中移除;
[0115] 線程控制模塊702,用于獲取終端設(shè)備處理器的核數(shù);根據(jù)所述核數(shù)在第一語言 環(huán)境下同時開啟多個更新線程;
[0116] 更新執(zhí)行模塊703,用于在每個所述更新線程中,通過預(yù)設(shè)的接口調(diào)用由第二語言 實現(xiàn)的更新函數(shù)以對所述第一列表中的一個應(yīng)用程序進行更新。
[0117] 在本實施例或本公開其他某些實施例中,所述第一語言為Java,所述第二語言為 C/C++,所述預(yù)設(shè)的接口為Java本地接口 JNI。
[0118] 參見圖8所示,在本實施例或本公開其他某些實施例中,所述更新執(zhí)行模塊703可 以包括:
[0119] 調(diào)用準備子模塊7031,用于在負責應(yīng)用程序更新的Java類中加載指定C文件編譯 后生成的類庫,其中所述C文件中含有所述使用C/C++實現(xiàn)的更新函數(shù)且所述C文件中引 入了 JNI. h頭文件,所述Java類中聲明了所述更新函數(shù);
[0120] 調(diào)用執(zhí)行子模塊7032,用于在所述Java類的所述更新線程中,直接調(diào)用所述更新 函數(shù)。
[0121] 在本實施例或本公開其他某些實施例中,所述線程控制模塊702還可以用于:
[0122] 在收到一個更新線程對一個應(yīng)用程序更新完成的響應(yīng)后,判斷所述第一列表中是 否還有應(yīng)用程序;如果所述第一列表中沒有應(yīng)用程序,則結(jié)束當前的更新線程;如果所述 第一列表中仍有應(yīng)用程序,則繼續(xù)在所述第一列表中選取一個應(yīng)用程序通過當前的更新線 程進行更新。
[0123] 關(guān)于上述實施例中的裝置,其中各個模塊執(zhí)行操作的具體方式已經(jīng)在有關(guān)該方法 的實施例中進行了詳細描述,此處將不做詳細闡述說明。
[0124] 本公開還提供了一種更新應(yīng)用程序的裝置,包括:
[0125] 處理器;
[0126] 用于存儲處理器可執(zhí)行指令的存儲器;
[0127] 其中,所述處理器被配置為:
[0128] 獲取第一列表,所述第一列表為待更新的應(yīng)用程序的列表;
[0129] 創(chuàng)建第二列表,所述第二列表為正在更新的應(yīng)用程序的列表;
[0130] 獲取終端設(shè)備處理器的核數(shù);
[0131] 根據(jù)所述核數(shù)在第一語言環(huán)境下同時開啟多個更新線程;
[0132] 在每個所述更新線程中,通過預(yù)設(shè)的接口調(diào)用由第二語言實現(xiàn)的更新函數(shù)以對所 述第一列表中的一個應(yīng)用程序進行更新,并將所述被更新的應(yīng)用程序從所述第一列表移至 所述第二列表;
[0133] 在收到一個更新線程對一個應(yīng)用程序更新完成的響應(yīng)后,將所述更新完成的應(yīng)用 程序從所述第二列表中移除。
[0134] 本公開還公開了一種非臨時性計算機可讀存儲介質(zhì),當所述存儲介質(zhì)中的指令 由終端設(shè)備的處理器執(zhí)行時,使得終端設(shè)備能夠執(zhí)行一種更新應(yīng)用程序方法,所述方法包 括:
[0135] 獲取第一列表,所述第一列表為待更新的應(yīng)用程序的列表;
[0136] 創(chuàng)建第二列表,所述第二列表為正在更新的應(yīng)用程序的列表;
[0137] 獲取終端設(shè)備處理器的核數(shù);
[0138] 根據(jù)所述核數(shù)在第一語言環(huán)境下同時開啟多個更新線程;
[0139] 在每個所述更新線程中,通過預(yù)設(shè)的接口調(diào)用由第二語言實現(xiàn)的更新函數(shù)以對所 述第一列表中的一個應(yīng)用程序進行更新,并將所述被更新的應(yīng)用程序從所述第一列表移至 所述第二列表;
[0140] 在收到一個更新線程對一個應(yīng)用程序更新完成的響應(yīng)后,將所述更新完成的應(yīng)用 程序從所述第二列表中移除。
[0141] 圖9是根據(jù)一示例性實施例示出的一種用于更新應(yīng)用程序的裝置的框圖。例如, 該裝置2800可以是移動電話,計算機,數(shù)字廣播終端,消息收發(fā)設(shè)備,游戲控制臺,平板設(shè) 備,醫(yī)療設(shè)備,健身設(shè)備,個人數(shù)字助理等。
[0142] 參照圖9,裝置2800可以包括以下一個或多個組件:處理組件2802,存儲器2804, 電源組件2806,多媒體組件2808,音頻組件2810,輸入/輸出(I/O)的接口 2812,傳感器組 件2814,以及通信組件2816。
[0143] 處理組件2802通??刂蒲b置2800的整體操作,諸如與顯示,電話呼叫,數(shù)據(jù)通信, 相機操作和記錄操作相關(guān)聯(lián)的操作。處理組件2802可以包括一個或多個處理器2820來執(zhí) 行指令,以完成上述的方法的全部或部分步驟。此外,處理組件2802可以包括一個或多個 模塊,便于處理組件2802和其他組件之間的交互。例如,處理組件2802可以包括多媒體模 塊,以方便多媒體組件2808和處理組件2802之間的交互。
[0144] 存儲器2804被配置為存儲各種類型的數(shù)據(jù)以支持在設(shè)備2800的操作。這些數(shù)據(jù) 的示例包括用于在裝置2800上操作的任何應(yīng)用程序或方法的指令,聯(lián)系人數(shù)據(jù),電話簿數(shù) 據(jù),消息,圖片,視頻等。存儲器2804可以由任何類型的易失性或非易失性存儲設(shè)備或者它 們的組合實現(xiàn),如靜態(tài)隨機存取存儲器(SRAM),電可擦除可編程只讀存儲器(EEPR0M),可 擦除可編程只讀存儲器(EPROM),可編程只讀存儲器(PR0M),只讀存儲器(R0M),磁存儲器, 快閃存儲器,磁盤或光盤。
[0145] 電源組件2806為裝置2800的各種組件提供電力。電源組件2806可以包括電源 管理系統(tǒng),一個或多個電源,及其他與為裝置2800生成、管理和分配電力相關(guān)聯(lián)的組件。
[0146] 多媒體組件2808包括在所述裝置2800和用戶之間的提供一個輸出接口的屏幕。 在一些實施例中,屏幕可以包括液晶顯示器(LCD)和觸摸面板(TP)。如果屏幕包括觸摸面 板,屏幕可以被實現(xiàn)為觸摸屏,以接收來自用戶的輸入信號。觸摸面板包括一個或多個觸摸 傳感器以感測觸摸、滑動和觸摸面板上的手勢。所述觸摸傳感器可以不僅感測觸摸或滑動 動作的邊界,而且還檢測與所述觸摸或滑動操作相關(guān)的持續(xù)時間和壓力。在一些實施例中, 多媒體組件2808包括一個前置攝像頭和/或后置攝像頭。當裝置2800處于操作模式,如 拍攝模式或視頻模式時,前置攝像頭和/或后置攝像頭可以接收外部的多媒體數(shù)據(jù)。每個 前置攝像頭和后置攝像頭可以是一個固定的光學透鏡系統(tǒng)或具有焦距和光學變焦能力。
[0147] 音頻組件2810被配置為輸出和/或輸入音頻信號。例如,音頻組件2810包括一 個麥克風(MIC),當裝置2800處于操作模式,如呼叫模式、記錄模式和語音識別模式時,麥 克風被配置為接收外部音頻信號。所接收的音頻信號可以被進一步存儲在存儲器2804或 經(jīng)由通信組件2816發(fā)送。在一些實施例中,音頻組件2810還包括一個揚聲器,用于輸出音 頻信號。
[0148] I/O接口 2812為處理組件2802和外圍接口模塊之間提供接口,上述外圍接口模塊 可以是鍵盤,點擊輪,按鈕等。這些按鈕可包括但不限于:主頁按鈕、音量按鈕、啟動按鈕和 鎖定按鈕。
[0149] 傳感器組件2814包括一個或多個傳感器,用于為裝置2800提供各個方面的狀態(tài) 評估。例如,傳感器組件2814可以檢測到設(shè)備2800的打開/關(guān)閉狀態(tài),組件的相對定位, 例如所述組件為裝置2800的顯示器和小鍵盤,傳感器組件2814還可以檢測裝置2800或裝 置2800 -個組件的位置改變,用戶與裝置2800接觸的存在或不存在,裝置2800方位或加 速/減速和裝置2800的溫度變化。傳感器組件2814可以包括接近傳感器,被配置用來在 沒有任何的物理接觸時檢測附近物體的存在。傳感器組件2814還可以包括光傳感器,如 CMOS或C⑶圖像傳感器,用于在成像應(yīng)用中使用。在一些實施例中,該傳感器組件2814還 可以包括加速度傳感器,陀螺儀傳感器,磁傳感器,壓力傳感器或溫度傳感器。
[0150] 通信組件2816被配置為便于裝置2800和其他設(shè)備之間有線或無線方式的通信。 裝置2800可以接入基于通信標準的無線網(wǎng)絡(luò),如WiFi,2G或3G,或它們的組合。在一個示 例性實施例中,通信組件2816經(jīng)由廣播信道接收來自外部廣播管理系統(tǒng)的廣播信號或廣 播相關(guān)信息。在一個示例性實施例中,所述通信組件2816還包括近場通信(NFC)模塊,以促 進短程通信。例如,在NFC模塊可基于射頻識別(RFID)技術(shù),紅外數(shù)據(jù)協(xié)會(IrDA)技術(shù), 超寬帶(UWB)技術(shù),藍牙(BT)技術(shù)和其他技術(shù)來實現(xiàn)。
[0151] 在示例性實施例中,裝置2800可以被一個或多個應(yīng)用專用集成電路(ASIC)、數(shù)字 信號處理器(DSP)、數(shù)字信號處理設(shè)備(DSPD)、可編程邏輯器件(PLD)、現(xiàn)場可編程門陣列 (FPGA)、控制器、微控制器、微處理器或其他電子元件實現(xiàn),用于執(zhí)行上述方法。
[0152] 在示例性實施例中,還提供了一種包括指令的非臨時性計算機可讀存儲介質(zhì),例 如包括指令的存儲器2804,上述指令可由裝置2800的處理器2820執(zhí)行以完成上述方法。例 如,所述非臨時性計算機可讀存儲介質(zhì)可以是ROM、隨機存取存儲器(RAM)、CD-ROM、磁帶、 軟盤和光數(shù)據(jù)存儲設(shè)備等。
[0153] 本領(lǐng)域技術(shù)人員在考慮說明書及實踐這里公開的發(fā)明后,將容易想到本發(fā)明的其 它實施方案。本申請旨在涵蓋本發(fā)明的任何變型、用途或者適應(yīng)性變化,這些變型、用途或 者適應(yīng)性變化遵循本發(fā)明的一般性原理并包括本公開未公開的本【技術(shù)領(lǐng)域】中的公知常識 或慣用技術(shù)手段。說明書和實施例僅被視為示例性的,本發(fā)明的真正范圍和精神由下面的 權(quán)利要求指出。
[0154] 應(yīng)當理解的是,本發(fā)明并不局限于上面已經(jīng)描述并在附圖中示出的精確結(jié)構(gòu),并 且可以在不脫離其范圍進行各種修改和改變。本發(fā)明的范圍僅由所附的權(quán)利要求來限制。
【權(quán)利要求】
1. 一種更新應(yīng)用程序的方法,其特征在于,所述方法包括: 獲取第一列表,所述第一列表為待更新的應(yīng)用程序的列表; 創(chuàng)建第二列表,所述第二列表為正在更新的應(yīng)用程序的列表; 獲取終端設(shè)備處理器的核數(shù); 根據(jù)所述核數(shù)在第一語言環(huán)境下同時開啟多個更新線程; 在每個所述更新線程中,通過預(yù)設(shè)的接口調(diào)用由第二語言實現(xiàn)的更新函數(shù)以對所述第 一列表中的一個應(yīng)用程序進行更新,并將所述被更新的應(yīng)用程序從所述第一列表移至所述 第二列表; 在收到一個更新線程對一個應(yīng)用程序更新完成的響應(yīng)后,將所述更新完成的應(yīng)用程序 從所述第二列表中移除。
2. 根據(jù)權(quán)利要求1所述的方法,其特征在于,所述第一語言為Java,所述第二語言為C/ C++,所述預(yù)設(shè)的接口為Java本地接口 JNI。
3. 根據(jù)權(quán)利要求2所述的方法,其特征在于,所述通過預(yù)設(shè)的接口調(diào)用由第二語言實 現(xiàn)的更新函數(shù),包括: 在負責應(yīng)用程序更新的Java類中加載指定C文件編譯后生成的類庫,其中所述C文件 中含有所述使用C/C++實現(xiàn)的更新函數(shù)且所述C文件中引入了 JNI. h頭文件,所述Java類 中聲明了所述更新函數(shù); 在所述Java類的所述更新線程中,直接調(diào)用所述更新函數(shù)。
4. 根據(jù)權(quán)利要求1所述的方法,其特征在于,所述多個更新線程的個數(shù)為: 如果M> = N,則a = N ;如果M〈N,則a = Μ ; 其中,a為所述多個更新線程的個數(shù),Μ為所述第一列表中應(yīng)用程序的個數(shù),Ν為所述處 理器的核數(shù)。
5. 根據(jù)權(quán)利要求1所述的方法,其特征在于,所述方法還包括: 在收到一個更新線程對一個應(yīng)用程序更新完成的響應(yīng)后,判斷所述第一列表中是否還 有應(yīng)用程序; 如果所述第一列表中沒有應(yīng)用程序,則結(jié)束當前的更新線程; 如果所述第一列表中仍有應(yīng)用程序,則繼續(xù)在所述第一列表中選取一個應(yīng)用程序通過 當前的更新線程進行更新。
6. -種更新應(yīng)用程序的裝置,其特征在于,所述裝置包括: 列表操作模塊,用于獲取第一列表,所述第一列表為待更新的應(yīng)用程序的列表;倉il建第 二列表,所述第二列表為正在更新的應(yīng)用程序的列表;將正在被更新的應(yīng)用程序從所述第 一列表移至所述第二列表;以及,在收到一個更新線程對一個應(yīng)用程序更新完成的響應(yīng)后, 將所述更新完成的應(yīng)用程序從所述第二列表中移除; 線程控制模塊,用于獲取終端設(shè)備處理器的核數(shù);根據(jù)所述核數(shù)在第一語言環(huán)境下同 時開啟多個更新線程; 更新執(zhí)行模塊,用于在每個所述更新線程中,通過預(yù)設(shè)的接口調(diào)用由第二語言實現(xiàn)的 更新函數(shù)以對所述第一列表中的一個應(yīng)用程序進行更新。
7. 根據(jù)權(quán)利要求6所述的裝置,其特征在于,所述第一語言為Java,所述第二語言為C/ C++,所述預(yù)設(shè)的接口為Java本地接口 JNI。
8. 根據(jù)權(quán)利要求7所述的裝置,其特征在于,所述更新執(zhí)行模塊包括: 調(diào)用準備子模塊,用于在負責應(yīng)用程序更新的Java類中加載指定C文件編譯后生成的 類庫,其中所述C文件中含有所述使用C/C++實現(xiàn)的更新函數(shù)且所述C文件中引入了 JNI. h頭文件,所述Java類中聲明了所述更新函數(shù); 調(diào)用執(zhí)行子模塊,用于在所述Java類的所述更新線程中,直接調(diào)用所述更新函數(shù)。
9. 根據(jù)權(quán)利要求6所述的裝置,其特征在于,所述線程控制模塊還用于: 在收到一個更新線程對一個應(yīng)用程序更新完成的響應(yīng)后,判斷所述第一列表中是否還 有應(yīng)用程序;如果所述第一列表中沒有應(yīng)用程序,則結(jié)束當前的更新線程;如果所述第一 列表中仍有應(yīng)用程序,則繼續(xù)在所述第一列表中選取一個應(yīng)用程序通過當前的更新線程進 行更新。
10. -種更新應(yīng)用程序的裝置,其特征在于,包括: 處理器; 用于存儲處理器可執(zhí)行指令的存儲器; 其中,所述處理器被配置為: 獲取第一列表,所述第一列表為待更新的應(yīng)用程序的列表; 創(chuàng)建第二列表,所述第二列表為正在更新的應(yīng)用程序的列表; 獲取終端設(shè)備處理器的核數(shù); 根據(jù)所述核數(shù)在第一語言環(huán)境下同時開啟多個更新線程; 在每個所述更新線程中,通過預(yù)設(shè)的接口調(diào)用由第二語言實現(xiàn)的更新函數(shù)以對所述第 一列表中的一個應(yīng)用程序進行更新,并將所述被更新的應(yīng)用程序從所述第一列表移至所述 第二列表; 在收到一個更新線程對一個應(yīng)用程序更新完成的響應(yīng)后,將所述更新完成的應(yīng)用程序 從所述第二列表中移除。
【文檔編號】G06F9/445GK104281478SQ201410589917
【公開日】2015年1月14日 申請日期:2014年10月28日 優(yōu)先權(quán)日:2014年10月28日
【發(fā)明者】續(xù)麗娜, 李明浩, 劉洪杰 申請人:小米科技有限責任公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
香蕉久久夜色| 欧美午夜高清在线| 麻豆乱淫一区二区| 国产在视频线精品| 高潮久久久久久久久久久不卡| 色婷婷av一区二区三区视频| 亚洲精品自拍成人| 美女高潮到喷水免费观看| 黄色视频不卡| 免费观看a级毛片全部| 国产熟女午夜一区二区三区| 香蕉国产在线看| 色94色欧美一区二区| 日韩免费av在线播放| 国产成+人综合+亚洲专区| 中文字幕最新亚洲高清| 色婷婷久久久亚洲欧美| 搡老岳熟女国产| 人人妻人人澡人人爽人人夜夜| 如日韩欧美国产精品一区二区三区| 免费av中文字幕在线| 精品久久久精品久久久| 十八禁高潮呻吟视频| 在线天堂中文资源库| 丝袜人妻中文字幕| 成人18禁在线播放| 黄色成人免费大全| 国产免费av片在线观看野外av| 中文字幕另类日韩欧美亚洲嫩草| 亚洲成国产人片在线观看| 一区二区三区国产精品乱码| 十八禁高潮呻吟视频| 日韩熟女老妇一区二区性免费视频| 亚洲五月婷婷丁香| 9色porny在线观看| 妹子高潮喷水视频| 亚洲精品美女久久av网站| 日韩大码丰满熟妇| 9色porny在线观看| 亚洲国产欧美日韩在线播放| 国产一区二区激情短视频| 国产色视频综合| 欧美日韩亚洲国产一区二区在线观看 | 69精品国产乱码久久久| 亚洲欧美日韩高清在线视频| 啦啦啦在线免费观看视频4| 看片在线看免费视频| 老司机福利观看| 丝袜人妻中文字幕| 1024视频免费在线观看| 成年人免费黄色播放视频| 一a级毛片在线观看| 欧美 亚洲 国产 日韩一| 午夜精品国产一区二区电影| 90打野战视频偷拍视频| 日本wwww免费看| 欧美最黄视频在线播放免费 | 国产精品综合久久久久久久免费 | 午夜视频精品福利| 国产成人精品在线电影| 777米奇影视久久| 老司机亚洲免费影院| 亚洲国产毛片av蜜桃av| 亚洲黑人精品在线| 最近最新中文字幕大全电影3 | 男女免费视频国产| 免费av中文字幕在线| 国产乱人伦免费视频| 久久久精品免费免费高清| 久久精品91无色码中文字幕| 久久久久久久久免费视频了| 欧美 日韩 精品 国产| 在线天堂中文资源库| 国产精品美女特级片免费视频播放器 | 欧美日韩视频精品一区| 热re99久久国产66热| 99久久人妻综合| 黄色视频,在线免费观看| 日本撒尿小便嘘嘘汇集6| 黑人操中国人逼视频| 婷婷精品国产亚洲av在线 | 老熟妇乱子伦视频在线观看| 国产91精品成人一区二区三区| 国产黄色免费在线视频| 人人澡人人妻人| 999久久久精品免费观看国产| 99精品欧美一区二区三区四区| 亚洲色图 男人天堂 中文字幕| 免费观看精品视频网站| av中文乱码字幕在线| 日韩欧美免费精品| 成人三级做爰电影| 欧美成人午夜精品| 老汉色av国产亚洲站长工具| 亚洲免费av在线视频| 久久精品亚洲精品国产色婷小说| 久久亚洲精品不卡| 中文欧美无线码| xxxhd国产人妻xxx| 亚洲少妇的诱惑av| 久久亚洲真实| 色婷婷av一区二区三区视频| 国产精品久久电影中文字幕 | 99精品在免费线老司机午夜| 久久精品国产综合久久久| 亚洲精品一卡2卡三卡4卡5卡| 岛国毛片在线播放| 欧美av亚洲av综合av国产av| 他把我摸到了高潮在线观看| 日韩欧美三级三区| 亚洲国产看品久久| 久久国产精品大桥未久av| 亚洲欧美激情综合另类| 亚洲一区中文字幕在线| 美女高潮喷水抽搐中文字幕| 日本一区二区免费在线视频| av电影中文网址| 美女午夜性视频免费| a级毛片在线看网站| 国产精品 欧美亚洲| 一二三四在线观看免费中文在| 亚洲第一av免费看| 啦啦啦 在线观看视频| 亚洲九九香蕉| 男女免费视频国产| 天天添夜夜摸| 极品教师在线免费播放| 老司机影院毛片| 亚洲国产欧美一区二区综合| 啪啪无遮挡十八禁网站| 91国产中文字幕| 国产精品一区二区免费欧美| 日韩欧美国产一区二区入口| 夜夜爽天天搞| 欧美大码av| 悠悠久久av| 国产精品自产拍在线观看55亚洲 | 99国产极品粉嫩在线观看| 五月开心婷婷网| 国产亚洲欧美98| 下体分泌物呈黄色| 19禁男女啪啪无遮挡网站| 日本wwww免费看| 老司机亚洲免费影院| 一进一出好大好爽视频| 精品无人区乱码1区二区| 久久精品亚洲熟妇少妇任你| 国产欧美日韩精品亚洲av| 精品一区二区三区四区五区乱码| 国产精品99久久99久久久不卡| 99精品欧美一区二区三区四区| 国产麻豆69| 亚洲一区中文字幕在线| 久久久久精品人妻al黑| 狂野欧美激情性xxxx| 女同久久另类99精品国产91| 久久中文字幕人妻熟女| 制服人妻中文乱码| 久久久久久人人人人人| 国产精品久久久久久人妻精品电影| 久久人妻av系列| 大型黄色视频在线免费观看| 男女之事视频高清在线观看| 人人澡人人妻人| av天堂在线播放| 亚洲黑人精品在线| 精品高清国产在线一区| 少妇被粗大的猛进出69影院| 日韩一卡2卡3卡4卡2021年| 一边摸一边抽搐一进一出视频| 亚洲男人天堂网一区| 日本wwww免费看| 欧美日韩精品网址| 久久精品人人爽人人爽视色| 亚洲综合色网址| 在线观看免费视频日本深夜| 黄色视频,在线免费观看| √禁漫天堂资源中文www| 精品一区二区三区视频在线观看免费 | 亚洲一区高清亚洲精品| √禁漫天堂资源中文www| 黄色毛片三级朝国网站| 亚洲自偷自拍图片 自拍| 激情视频va一区二区三区| 男女午夜视频在线观看| 国产又爽黄色视频| 捣出白浆h1v1| 一个人免费在线观看的高清视频| 视频在线观看一区二区三区| 美女 人体艺术 gogo| 国产精品秋霞免费鲁丝片| 黑人欧美特级aaaaaa片| 少妇 在线观看| 一区福利在线观看| 亚洲av欧美aⅴ国产| 大片电影免费在线观看免费| 不卡av一区二区三区| tube8黄色片| 欧美日韩亚洲综合一区二区三区_| 精品久久久久久电影网| 亚洲av片天天在线观看| 久久久久久久国产电影| 黄色视频不卡| 99久久国产精品久久久| 国产1区2区3区精品| 黄网站色视频无遮挡免费观看| 国产91精品成人一区二区三区| 母亲3免费完整高清在线观看| 久久久国产成人精品二区 | 免费av中文字幕在线| 不卡av一区二区三区| 国产成人系列免费观看| 日韩三级视频一区二区三区| 成熟少妇高潮喷水视频| 国产高清视频在线播放一区| 在线看a的网站| 国产日韩一区二区三区精品不卡| 精品亚洲成国产av| 桃红色精品国产亚洲av| 日韩免费高清中文字幕av| 久久精品aⅴ一区二区三区四区| 欧美日韩视频精品一区| 老司机深夜福利视频在线观看| 大型黄色视频在线免费观看| 99精品欧美一区二区三区四区| 中亚洲国语对白在线视频| 国产区一区二久久| 777米奇影视久久| 午夜91福利影院| 丰满饥渴人妻一区二区三| 久热这里只有精品99| 午夜福利免费观看在线| 亚洲精品自拍成人| 欧美中文综合在线视频| 自拍欧美九色日韩亚洲蝌蚪91| 一级毛片高清免费大全| 无遮挡黄片免费观看| 国产精品成人在线| 岛国在线观看网站| 老司机影院毛片| 欧美久久黑人一区二区| 美女午夜性视频免费| 69精品国产乱码久久久| 天堂俺去俺来也www色官网| 色94色欧美一区二区| 女警被强在线播放| 啦啦啦在线免费观看视频4| 天天躁夜夜躁狠狠躁躁| 久久久久久久午夜电影 | 香蕉国产在线看| 亚洲精品久久午夜乱码| 国产精品综合久久久久久久免费 | 丝袜美足系列| 亚洲伊人色综图| 日韩欧美免费精品| 精品国产一区二区久久| svipshipincom国产片| 国产精品1区2区在线观看. | 日韩人妻精品一区2区三区| 女人精品久久久久毛片| 精品高清国产在线一区| 亚洲三区欧美一区| 久久精品国产亚洲av香蕉五月 | 国产成人精品久久二区二区免费| 国产精品免费视频内射| 国产真人三级小视频在线观看| 免费在线观看完整版高清| 满18在线观看网站| 欧美成狂野欧美在线观看| 丰满人妻熟妇乱又伦精品不卡| 又黄又爽又免费观看的视频| 国产xxxxx性猛交| 视频在线观看一区二区三区| 人人妻人人添人人爽欧美一区卜| 国产欧美日韩一区二区三区在线| 久久国产精品大桥未久av| 女人精品久久久久毛片| 一边摸一边抽搐一进一出视频| 91麻豆精品激情在线观看国产 | 亚洲人成伊人成综合网2020| 欧美人与性动交α欧美软件| 日韩欧美一区视频在线观看| 免费观看a级毛片全部| 好看av亚洲va欧美ⅴa在| 免费少妇av软件| 狠狠婷婷综合久久久久久88av| 成熟少妇高潮喷水视频| 麻豆乱淫一区二区| 69av精品久久久久久| 咕卡用的链子| 国产精品九九99| 可以免费在线观看a视频的电影网站| 国产成+人综合+亚洲专区| 波多野结衣av一区二区av| 天天操日日干夜夜撸| 人人妻人人澡人人看| 淫妇啪啪啪对白视频| 老司机靠b影院| 十八禁网站免费在线| 高清毛片免费观看视频网站 | 亚洲人成电影观看| xxxhd国产人妻xxx| 婷婷精品国产亚洲av在线 | 美女国产高潮福利片在线看| 亚洲成人国产一区在线观看| 久99久视频精品免费| 无限看片的www在线观看| 国产精品久久久人人做人人爽| 99热国产这里只有精品6| 在线十欧美十亚洲十日本专区| 亚洲,欧美精品.| 国产成人免费观看mmmm| av中文乱码字幕在线| 欧美日韩一级在线毛片| 午夜两性在线视频| 一级,二级,三级黄色视频| 99国产精品一区二区三区| 国产精品自产拍在线观看55亚洲 | 欧美日韩乱码在线| 午夜91福利影院| 国产欧美日韩精品亚洲av| 国产片内射在线| 日韩精品免费视频一区二区三区| 校园春色视频在线观看| 午夜福利乱码中文字幕| 成人18禁在线播放| 午夜免费观看网址| 久久影院123| 亚洲精品久久成人aⅴ小说| 91麻豆av在线| 午夜福利欧美成人| 老司机福利观看| tube8黄色片| 夜夜夜夜夜久久久久| av线在线观看网站| 国产成人免费观看mmmm| 久久久久久久国产电影| 丝袜美腿诱惑在线| 自拍欧美九色日韩亚洲蝌蚪91| 欧美精品亚洲一区二区| 国产精品香港三级国产av潘金莲| 欧美亚洲 丝袜 人妻 在线| 久久影院123| 国产99白浆流出| www.999成人在线观看| 国产av又大| 咕卡用的链子| 老司机影院毛片| 丁香六月欧美| 亚洲精品久久成人aⅴ小说| 制服诱惑二区| 欧美最黄视频在线播放免费 | 亚洲一区二区三区不卡视频| 精品久久久久久久毛片微露脸| 淫妇啪啪啪对白视频| 欧美午夜高清在线| 国产精品一区二区免费欧美| 亚洲精品美女久久久久99蜜臀| 黄片播放在线免费| 亚洲成av片中文字幕在线观看| 最近最新中文字幕大全电影3 | 国产精品久久电影中文字幕 | 亚洲色图 男人天堂 中文字幕| 亚洲自偷自拍图片 自拍| 一a级毛片在线观看| 国产成人影院久久av| 国产日韩一区二区三区精品不卡| 亚洲精品成人av观看孕妇| 999精品在线视频| 女性生殖器流出的白浆| 国产成人欧美在线观看 | 国产三级黄色录像| 十分钟在线观看高清视频www| 九色亚洲精品在线播放| 交换朋友夫妻互换小说| 老司机在亚洲福利影院| 人成视频在线观看免费观看| 侵犯人妻中文字幕一二三四区| 麻豆av在线久日| 久久精品亚洲熟妇少妇任你| 亚洲av日韩在线播放| 看黄色毛片网站| 精品人妻在线不人妻| av福利片在线| 午夜日韩欧美国产| av线在线观看网站| 国产成人精品久久二区二区91| 国产高清videossex| 乱人伦中国视频| 黄色视频不卡| 国产成人欧美在线观看 | 香蕉丝袜av| 9色porny在线观看| 精品人妻熟女毛片av久久网站| 黄片播放在线免费| 久久久水蜜桃国产精品网| 人妻丰满熟妇av一区二区三区 | 国产精品久久电影中文字幕 | 色婷婷av一区二区三区视频| 丁香欧美五月| 欧美成人免费av一区二区三区 | 一进一出抽搐动态| 欧美日韩国产mv在线观看视频| 极品少妇高潮喷水抽搐| 国产伦人伦偷精品视频| 免费久久久久久久精品成人欧美视频| 一边摸一边做爽爽视频免费| 天天添夜夜摸| 50天的宝宝边吃奶边哭怎么回事| 亚洲欧美色中文字幕在线| 嫁个100分男人电影在线观看| 亚洲五月色婷婷综合| 国产精品成人在线| 一进一出抽搐gif免费好疼 | 国精品久久久久久国模美| 亚洲av成人av| 免费一级毛片在线播放高清视频 | 高清视频免费观看一区二区| 黄色怎么调成土黄色| 在线天堂中文资源库| 国产成人精品久久二区二区免费| 一夜夜www| 欧美日韩av久久| 日韩大码丰满熟妇| 纯流量卡能插随身wifi吗| 免费在线观看黄色视频的| 中文字幕制服av| 亚洲欧美激情综合另类| 国产又色又爽无遮挡免费看| 成人18禁高潮啪啪吃奶动态图| 天堂动漫精品| 亚洲av成人一区二区三| 亚洲av日韩在线播放| 变态另类成人亚洲欧美熟女 | a级毛片在线看网站| 欧美不卡视频在线免费观看 | 国产在线精品亚洲第一网站| 国产三级黄色录像| 国产免费男女视频| 久久精品成人免费网站| netflix在线观看网站| 国产一区二区三区综合在线观看| 久久久久久人人人人人| 日本wwww免费看| 欧美精品高潮呻吟av久久| 免费av中文字幕在线| 亚洲成av片中文字幕在线观看| 少妇猛男粗大的猛烈进出视频| 日韩欧美免费精品| 侵犯人妻中文字幕一二三四区| 制服诱惑二区| 男女午夜视频在线观看| 国产精品 欧美亚洲| 男女床上黄色一级片免费看| 亚洲国产欧美网| 精品免费久久久久久久清纯 | 视频区图区小说| 天天躁狠狠躁夜夜躁狠狠躁| 亚洲欧洲精品一区二区精品久久久| 十八禁网站免费在线| 亚洲av成人一区二区三| 啪啪无遮挡十八禁网站| 丝袜在线中文字幕| 18禁裸乳无遮挡动漫免费视频| 久久精品aⅴ一区二区三区四区| 亚洲在线自拍视频| 亚洲av电影在线进入| 欧美国产精品va在线观看不卡| 国产黄色免费在线视频| 男人舔女人的私密视频| 久久久久国产一级毛片高清牌| 国产蜜桃级精品一区二区三区 | 免费女性裸体啪啪无遮挡网站| 国产精品1区2区在线观看. | 黄网站色视频无遮挡免费观看| 99热国产这里只有精品6| 欧美精品高潮呻吟av久久| 国产人伦9x9x在线观看| 视频区欧美日本亚洲| 色婷婷久久久亚洲欧美| 制服诱惑二区| tube8黄色片| 正在播放国产对白刺激| av有码第一页| 欧美国产精品va在线观看不卡| 国产成人影院久久av| 亚洲 国产 在线| 老司机福利观看| 深夜精品福利| 搡老熟女国产l中国老女人| 欧美在线一区亚洲| 女人被躁到高潮嗷嗷叫费观| 精品午夜福利视频在线观看一区| 深夜精品福利| 欧美乱色亚洲激情| a在线观看视频网站| 韩国精品一区二区三区| 欧洲精品卡2卡3卡4卡5卡区| 欧美激情极品国产一区二区三区| 亚洲va日本ⅴa欧美va伊人久久| 亚洲人成电影观看| 亚洲少妇的诱惑av| 国产精品一区二区在线不卡| 亚洲av电影在线进入| 97人妻天天添夜夜摸| 中文字幕人妻熟女乱码| 国产精品香港三级国产av潘金莲| 欧美最黄视频在线播放免费 | 成人手机av| 国产在线一区二区三区精| av网站在线播放免费| 99国产精品免费福利视频| 久久精品亚洲精品国产色婷小说| 桃红色精品国产亚洲av| 国产亚洲精品第一综合不卡| 91大片在线观看| 天天添夜夜摸| 麻豆乱淫一区二区| 国产区一区二久久| 99热只有精品国产| 国产成+人综合+亚洲专区| 高清毛片免费观看视频网站 | 少妇被粗大的猛进出69影院| 中文字幕高清在线视频| 中亚洲国语对白在线视频| 亚洲全国av大片| 午夜久久久在线观看| 日韩三级视频一区二区三区| 美女国产高潮福利片在线看| 久99久视频精品免费| avwww免费| 日日爽夜夜爽网站| 老鸭窝网址在线观看| 亚洲 国产 在线| 多毛熟女@视频| 国产免费现黄频在线看| 侵犯人妻中文字幕一二三四区| 精品一区二区三区四区五区乱码| 丰满的人妻完整版| 亚洲av成人一区二区三| 18禁裸乳无遮挡免费网站照片 | 国产欧美日韩综合在线一区二区| 日韩精品免费视频一区二区三区| 久久国产亚洲av麻豆专区| 欧美精品人与动牲交sv欧美| 91字幕亚洲| 国产激情久久老熟女| 日韩熟女老妇一区二区性免费视频| 成人手机av| 国产精品久久久av美女十八| 久久青草综合色| 满18在线观看网站| 久久久久久久国产电影| 国产精品永久免费网站| 午夜福利免费观看在线| 麻豆乱淫一区二区| 国产单亲对白刺激| 捣出白浆h1v1| 777久久人妻少妇嫩草av网站| 精品国产一区二区久久| a级片在线免费高清观看视频| 在线观看舔阴道视频| 桃红色精品国产亚洲av| 国产在线观看jvid| 精品少妇久久久久久888优播| 免费观看人在逋| 国产精品久久久久久精品古装| 一级片'在线观看视频| 久久香蕉国产精品| 侵犯人妻中文字幕一二三四区| 国产亚洲欧美98| 亚洲成av片中文字幕在线观看| 亚洲国产精品合色在线| bbb黄色大片| 1024香蕉在线观看| av不卡在线播放| 麻豆国产av国片精品| 国产精品香港三级国产av潘金莲| 亚洲中文日韩欧美视频| 超色免费av| 国产亚洲精品第一综合不卡| 精品少妇久久久久久888优播| 国产精品久久久久久人妻精品电影| 亚洲av成人不卡在线观看播放网| 色尼玛亚洲综合影院| 国产一区二区三区综合在线观看| 午夜91福利影院| 在线观看午夜福利视频| 欧美av亚洲av综合av国产av| 人人妻人人添人人爽欧美一区卜| 精品久久久久久久毛片微露脸| 欧美激情久久久久久爽电影 | 久久精品成人免费网站| 精品久久久久久,| 啦啦啦在线免费观看视频4| 麻豆av在线久日| 欧美精品高潮呻吟av久久| 啦啦啦视频在线资源免费观看| 这个男人来自地球电影免费观看| 国产一区有黄有色的免费视频| 久久 成人 亚洲| 午夜福利在线观看吧| 午夜福利视频在线观看免费| 99精品在免费线老司机午夜| 亚洲一区二区三区欧美精品| 亚洲美女黄片视频| 国精品久久久久久国模美| 丝袜人妻中文字幕| 国产一区在线观看成人免费| 色播在线永久视频| 制服诱惑二区| 国产精品久久久人人做人人爽| 无限看片的www在线观看| 国产欧美日韩综合在线一区二区| a级片在线免费高清观看视频|