亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

一種Android程序中的組件管理方法和裝置的制造方法

文檔序號(hào):8430566閱讀:176來(lái)源:國(guó)知局
一種Android程序中的組件管理方法和裝置的制造方法
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明涉及移動(dòng)終端技術(shù)領(lǐng)域,具體涉及一種Android程序中的組件管理方法和 裝置。
【背景技術(shù)】
[0002] 隨著Android系統(tǒng)的迅猛發(fā)展,它已經(jīng)成為全球范圍內(nèi)具有廣泛影響力的操作系 統(tǒng)之一,被越來(lái)越廣泛地應(yīng)用于手機(jī)、PAD、可佩帶設(shè)備等移動(dòng)終端,這也造就了 Android開 發(fā)需求的快速增長(zhǎng)。
[0003] 現(xiàn)有技術(shù)中,一款A(yù)ndroid程序的功能的擴(kuò)展,依賴于插件中能夠?qū)崿F(xiàn)特定功能 的組件的運(yùn)行,然而,Android系統(tǒng)只能調(diào)用Android程序的配置文件中已聲明的組件,即 系統(tǒng)通過(guò)Android程序的配置文件調(diào)用標(biāo)準(zhǔn)ClassLoader方法加載已聲明的組件的Class 對(duì)象,進(jìn)而才能運(yùn)行對(duì)應(yīng)組件;導(dǎo)致Android程序在加載插件、運(yùn)行插件中能夠?qū)崿F(xiàn)特定 功能的組件之前,必須先要對(duì)該Android程序的配置文件進(jìn)行整體的更新升級(jí)。這就使得 Android程序的功能擴(kuò)展受到很大限制,插件無(wú)法自由定制Android組件,Android開發(fā)呈 現(xiàn)低效、復(fù)雜、不符合應(yīng)用需求的劣勢(shì);對(duì)于用戶開說(shuō),很多時(shí)候Android程序只是增加了 一個(gè)很小的功能,卻需要下載一個(gè)完整的APK進(jìn)行更新,操作過(guò)程繁瑣,不符合用戶需求。

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

[0004] 鑒于上述問(wèn)題,提出了本發(fā)明以便提供一種克服上述問(wèn)題或者至少部分地解決上 述問(wèn)題的一種。
[0005] 依據(jù)本發(fā)明的一個(gè)方面,提供了一種Android程序中的組件管理方法,該方法包 括:
[0006] 在所述Android程序的配置文件中預(yù)留一個(gè)或多個(gè)組件,為預(yù)留的每個(gè)組件聲明 一個(gè)進(jìn)程;
[0007] 在所述Android程序的插件的配置文件中聲明該插件要使用的實(shí)現(xiàn)特定功能的 組件的內(nèi)容;
[0008] 當(dāng)所述插件需要運(yùn)行所述實(shí)現(xiàn)特定功能的組件時(shí),從預(yù)留的組件所聲明的進(jìn)程中 找到一個(gè)可用進(jìn)程;
[0009] 將所述實(shí)現(xiàn)特定功能的組件的內(nèi)容傳遞到所找到的可用進(jìn)程對(duì)應(yīng)的同類型組件 中;
[0010] 啟動(dòng)所述可用進(jìn)程,使得所述可用進(jìn)程對(duì)應(yīng)的同類型組件在該進(jìn)程中運(yùn)行。
[0011] 可選地,在所述啟動(dòng)所述可用進(jìn)程之前,該方法進(jìn)一步包括:
[0012] 獲取并加載所述實(shí)現(xiàn)特定功能的組件的Class對(duì)象。
[0013] 可選地,所述獲取并加載所述實(shí)現(xiàn)特定功能的組件的Class對(duì)象是指:
[0014] 從所述插件的配置文件中獲取所述實(shí)現(xiàn)特定功能的組件的內(nèi)容;
[0015]自定義 ClassLoader方法;
[0016]由所述自定義ClassLoader方法根據(jù)所述實(shí)現(xiàn)特定功能的組件的內(nèi)容獲取并加 載所述實(shí)現(xiàn)特定功能的組件的Class對(duì)象。
[0017] 可選地,所述在所述Android程序的配置文件中預(yù)留一個(gè)或多個(gè)組件,為預(yù)留的 每個(gè)組件聲明一個(gè)進(jìn)程包括:
[0018] 利用所述Android程序的AndroidManifest.xml文件中的〈service〉標(biāo)簽預(yù)留一 個(gè)或多個(gè)Service組件,為預(yù)留的每個(gè)Service組件聲明一個(gè)進(jìn)程;
[0019]和 / 或,
[0020] 利用所述Android程序的AndroidManifest.xml文件中的〈provider〉標(biāo)簽預(yù)留 一個(gè)或多個(gè)ContentProvider組件,為預(yù)留的每個(gè)ContentProvider組件聲明一個(gè)進(jìn)程。
[0021] 可選地,所述將所述實(shí)現(xiàn)特定功能的組件的內(nèi)容傳遞到所找到的可用進(jìn)程對(duì)應(yīng)的 同類型組件中是指:
[0022] 將所述實(shí)現(xiàn)特定功能的組件的內(nèi)容封裝在ComponentName類中;
[0023] 通過(guò)Intent方法將該ComponentName類傳遞到所找到的可用進(jìn)程對(duì)應(yīng)的同類型 組件中。
[0024] 可選地,當(dāng)所述實(shí)現(xiàn)特定功能的組件為Service組件時(shí),所述啟動(dòng)所述可用進(jìn)程, 使得所述可用進(jìn)程對(duì)應(yīng)的同類型組件在該進(jìn)程中運(yùn)行是指:
[0025] 通過(guò)context.startService方法啟動(dòng)所述可用進(jìn)程,使得所述可用進(jìn)程對(duì)應(yīng)的 Service組件在該進(jìn)程中運(yùn)行。
[0026] 可選地,該方法進(jìn)一步包括:
[0027] 在所述Android程序的配置文件中實(shí)時(shí)記錄更新所述Android程序的各進(jìn)程的進(jìn) 程信息。
[0028] 可選地,所述進(jìn)程信息包括以下信息中的一個(gè)或多個(gè):
[0029] 進(jìn)程編號(hào)、進(jìn)程狀態(tài)、進(jìn)程啟動(dòng)/修改狀態(tài)的時(shí)間、進(jìn)程對(duì)應(yīng)的組件名、進(jìn)程的ID 標(biāo)識(shí)、進(jìn)程中運(yùn)行各組件的數(shù)量。
[0030] 可選地,在所述從預(yù)留的組件所聲明的進(jìn)程中找到一個(gè)可用進(jìn)程之前,該方法進(jìn) 一步包括:
[0031] 遍歷所述Android程序的所有進(jìn)程,根據(jù)各進(jìn)程的進(jìn)程信息,判斷是否存在已分 配給所述實(shí)現(xiàn)特定功能的組件的進(jìn)程;
[0032] 是則,直接令所述實(shí)現(xiàn)特定功能的組件在該進(jìn)程中運(yùn)行,不再執(zhí)行所述從預(yù)留的 組件所聲明的進(jìn)程中找到一個(gè)可用進(jìn)程的操作。
[0033] 可選地,所述從預(yù)留的組件所聲明的進(jìn)程中找到一個(gè)可用進(jìn)程包括:
[0034] 遍歷所有預(yù)留的組件所聲明的進(jìn)程,根據(jù)各進(jìn)程的進(jìn)程信息,判斷是否存在閑置 進(jìn)程;
[0035] 如果存在一個(gè)閑置進(jìn)程,則將該閑置進(jìn)程作為可用進(jìn)程;
[0036] 如果存在多個(gè)閑置進(jìn)程,則選擇其中最早啟動(dòng)的進(jìn)程作為可用進(jìn)程。
[0037] 可選地,所述從預(yù)留的組件所聲明的進(jìn)程中找到一個(gè)可用進(jìn)程進(jìn)一步包括:
[0038] 如果不存在閑置進(jìn)程,則強(qiáng)制回收最早啟動(dòng)的預(yù)留的組件所聲明的進(jìn)程,重新創(chuàng) 建該進(jìn)程作為可用進(jìn)程。
[0039] 可選地,所述遍歷所有預(yù)留的組件所聲明的進(jìn)程,根據(jù)各進(jìn)程的進(jìn)程信息,判斷是 否存在閑置進(jìn)程包括:
[0040] 遍歷所有預(yù)留的組件所聲明的進(jìn)程,判斷是否存在處于未啟動(dòng)狀態(tài)的進(jìn)程,是則 強(qiáng)制回收該進(jìn)程,重新創(chuàng)建該進(jìn)程作為所述閑置進(jìn)程;
[0041] 否則判斷是否存在處于停止?fàn)顟B(tài)的進(jìn)程,是則強(qiáng)制回收該進(jìn)程,重新創(chuàng)建該進(jìn)程 作為所述閑置進(jìn)程;
[0042] 否則判斷是否存在處于暫停狀態(tài)且距離上次啟動(dòng)已超過(guò)指定時(shí)間的進(jìn)程,是則強(qiáng) 制回收該進(jìn)程,重新創(chuàng)建該進(jìn)程作為所述閑置進(jìn)程;
[0043] 否則判斷是否存在處于啟動(dòng)狀態(tài)且距離上次使用Activity組件、Service組件、 ContentProvide組件r和Binder組件均已超過(guò)指定時(shí)間的進(jìn)程,是則強(qiáng)制回收該進(jìn)程,重 新創(chuàng)建該進(jìn)程作為所述閑置進(jìn)程。
[0044] 依據(jù)本發(fā)明的另一個(gè)方面,提供了一種Android程序中的組件管理裝置,該裝置 包括:
[0045] 配置單元,適于在所述Android程序的配置文件中預(yù)留一個(gè)或多個(gè)組件,為預(yù)留 的每個(gè)組件聲明一個(gè)進(jìn)程;以及適于在所述Android程序的插件的配置文件中聲明該插件 要使用的實(shí)現(xiàn)特定功能的組件的內(nèi)容;
[0046] 查找單元,適于當(dāng)所述插件需要運(yùn)行所述實(shí)現(xiàn)特定功能的組件時(shí),從預(yù)留的組件 所聲明的進(jìn)程中找到一個(gè)可用進(jìn)程;
[0047]啟動(dòng)單元,適于將所述實(shí)現(xiàn)特定功能的組件的內(nèi)容傳遞到所找到的可用進(jìn)程對(duì)應(yīng) 的同類型組件中;以及適于啟動(dòng)所述可用進(jìn)程,使得所述可用進(jìn)程對(duì)應(yīng)的同類型組件在該 進(jìn)程中運(yùn)行。
[0048] 可選地,所述啟動(dòng)單元,進(jìn)一步適于獲取并加載所述實(shí)現(xiàn)特定功能的組件的Class 對(duì)象。
[0049] 可選地,所述啟動(dòng)單元,適于從所述插件的配置文件中獲取所述實(shí)現(xiàn)特定功能的 組件的內(nèi)容;以及適于自定義ClassLoader方法;由所述自定義ClassLoader方法根據(jù)所 述實(shí)現(xiàn)特定功能的組件的內(nèi)容獲取并加載所述實(shí)現(xiàn)特定功能的組件的Class對(duì)象。
[0050] 可選地,所述配置單元,適于利用所述Android程序的AndroidManifest.xml文件 中的〈service〉標(biāo)簽預(yù)留一個(gè)或多個(gè)Service組件,為預(yù)留的每個(gè)Service組件聲明一個(gè) 進(jìn)程;和/或,適于利用所述Android程序的AndroidManifest.xml文件中的〈provider〉 標(biāo)簽預(yù)留一個(gè)或多個(gè)ContentProvider組件,為預(yù)留的每個(gè)ContentProvider組件聲明一 個(gè)進(jìn)程。
[0051] 可選地,所述啟動(dòng)單元,適于將所述實(shí)現(xiàn)特定功能的組件的內(nèi)容封裝在 ComponentName類中;再通過(guò)Intent方法將該ComponentName類傳遞到所找到的可用進(jìn)程 對(duì)應(yīng)的同類型組件中。
[0052] 可選地,當(dāng)所述實(shí)現(xiàn)特定功能的組件為Service組件時(shí),
[0053] 所述啟動(dòng)單元,適于通過(guò)context.startService方法啟動(dòng)所述可用進(jìn)程,使得所 述可用進(jìn)程對(duì)應(yīng)的Service組件在該進(jìn)程中運(yùn)行。
[0054] 可選地,所述配置單元,進(jìn)一步適于在所述Android程序的配置文件中實(shí)時(shí)記錄 更新所述Android程序的各進(jìn)程的進(jìn)程信息。
[0055] 可選地,所述進(jìn)程信息包括以下信息中的一個(gè)或多個(gè):
[0056] 進(jìn)程編號(hào)、進(jìn)程狀態(tài)、進(jìn)程啟動(dòng)/修改狀態(tài)的時(shí)間、進(jìn)程對(duì)應(yīng)的組件名、進(jìn)程的ID 標(biāo)識(shí)、進(jìn)程中運(yùn)行各組件的數(shù)量。
[0057] 可選地,所述查找單元,進(jìn)一步適于遍歷所述Android程序的所有進(jìn)程,根據(jù)各進(jìn) 程的進(jìn)程信息,判斷是否存在已分配給所述實(shí)現(xiàn)特定功能的組件的進(jìn)程;是則,直接通知所 述啟動(dòng)單元,不再執(zhí)行所述從預(yù)留的組件所聲明的進(jìn)程中找到一個(gè)可用進(jìn)程的操作;
[0058] 所述啟動(dòng)單元,適于令所述實(shí)現(xiàn)特定功能的組件在該進(jìn)程中運(yùn)行。
[0059] 可選地,所述查找單元,適于遍歷所有預(yù)留的組件所聲明的進(jìn)程,根據(jù)各進(jìn)程的進(jìn) 程信息,判斷是否存在閑置進(jìn)程;如果存在一個(gè)閑置進(jìn)程,則將該閑置進(jìn)程作為可用進(jìn)程; 如果存在多個(gè)閑置進(jìn)程,則選擇其中最早啟動(dòng)的進(jìn)程作為可用進(jìn)程。
[0060] 可選地,所述查找單元,進(jìn)一步適于當(dāng)不存在閑置進(jìn)程時(shí),強(qiáng)制回收最早啟動(dòng)的預(yù) 留的組件所聲明的進(jìn)程,重新創(chuàng)建該進(jìn)程作為可用進(jìn)程。
[0061] 可選地,所述查找單元,適于遍歷所有預(yù)留的組件所聲明的進(jìn)程,判斷是否存在處 于未啟動(dòng)狀態(tài)的進(jìn)程,是則強(qiáng)制回收該進(jìn)程,重新創(chuàng)建該進(jìn)程作為所述閑置進(jìn)程;否則判斷 是否存在處于停止?fàn)顟B(tài)的進(jìn)程,是則強(qiáng)制回收該進(jìn)程,重新創(chuàng)建該進(jìn)程作為所述閑置進(jìn)程; 否則判斷是否存在處于暫停狀態(tài)且距離上次啟動(dòng)已超過(guò)指定時(shí)間的進(jìn)程,是則強(qiáng)制回收該 進(jìn)程,重新創(chuàng)建該進(jìn)程作為所述閑置進(jìn)程;否則判斷是否存在處于啟動(dòng)狀態(tài)且距離上次使 用Activity組件、Service組件、ContentProvider組件和Binder組件均已超過(guò)指定時(shí)間 的進(jìn)程,是則強(qiáng)制回收該進(jìn)程,重新創(chuàng)建該進(jìn)程作為所述閑置進(jìn)程。
[0062] 由上述可知,本發(fā)明提供的技術(shù)方案通過(guò)對(duì)Android程序的配置文件的預(yù)先設(shè) 置,預(yù)留一個(gè)或多個(gè)組件,并為預(yù)留的每個(gè)組件聲明一個(gè)進(jìn)程,當(dāng)插件需要運(yùn)行實(shí)現(xiàn)特定功 能的組件時(shí),無(wú)需重新配置Android程序,直接從預(yù)留的組件所聲明的進(jìn)程中找到一個(gè)可 用進(jìn)程,將實(shí)現(xiàn)特定功能
當(dāng)前第1頁(yè)1 2 
網(wǎng)友詢問(wèn)留言 已有0條留言
  • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1