溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶(hù)服務(wù)條款》

Android中的apk格式有什么用

發(fā)布時(shí)間:2022-04-13 15:37:11 來(lái)源:億速云 閱讀:114 作者:iii 欄目:編程語(yǔ)言

這篇文章主要介紹了Android中的apk格式有什么用的相關(guān)知識(shí),內(nèi)容詳細(xì)易懂,操作簡(jiǎn)單快捷,具有一定借鑒價(jià)值,相信大家閱讀完這篇Android中的apk格式有什么用文章都會(huì)有所收獲,下面我們一起來(lái)看看吧。

Android  apk 的構(gòu)造真的很奇妙,它吸取了client/service的思想,apk沒(méi)有自己的獨(dú)立入口函數(shù),只是包含一個(gè)或者多個(gè)component,在進(jìn)行程序執(zhí)行時(shí)根據(jù)manifest配置文件來(lái)確定需要哪些的component。

而conponent的激活是由intent來(lái)觸發(fā)的,intent說(shuō)穿了就是一個(gè)包括了操作和操作數(shù)據(jù) 的action,相當(dāng)于這個(gè)component就是一個(gè)服務(wù)提供者,intent帶來(lái)請(qǐng)求,然后它執(zhí)行請(qǐng)求。而且intent可以指定component來(lái)執(zhí)行請(qǐng)求,也可以不指定有component根據(jù)過(guò)濾器的匹配來(lái)選擇最合適的component來(lái)完成請(qǐng)求。

而且還有一個(gè)就是在應(yīng)用 程序?qū)拥膒rocess是以linux user ID來(lái)區(qū)分的,每個(gè)進(jìn)程對(duì)應(yīng)一個(gè)虛擬機(jī),但一個(gè)進(jìn)程中可以跑多個(gè)應(yīng)用程序,而不僅僅是局限于一個(gè)。其實(shí)這個(gè)也好理解,一個(gè)應(yīng)用程序就是多個(gè)component,多個(gè)應(yīng)用程序可以看做是很多component組成的一個(gè)apk。

1、activity
在Android apk里面activity是一個(gè)UI的概念,一個(gè)應(yīng)用程序可以擁有多個(gè)Activity。實(shí)際上一個(gè)Activity就是一個(gè)窗口,而里面的內(nèi)容就是各種view了。通過(guò)setContentView()將窗口和內(nèi)容聯(lián)系在一起。

2、service
service實(shí)際上可以就看成沒(méi)有UI而運(yùn)行在后臺(tái)的component,在Android中這個(gè)service又分為兩種,一種就是這個(gè)需要的 service是運(yùn)行在本地進(jìn)程中,也就是說(shuō)與應(yīng)用程序運(yùn)行在一個(gè)進(jìn)程之類(lèi),還有一種就是這個(gè)service運(yùn)行在其他的進(jìn)程中。

3、Broadcast receivers
這個(gè)實(shí)際上就是一個(gè)intent的接收機(jī),當(dāng)系統(tǒng) 廣播intent的時(shí)候,它接收應(yīng)用程序感興趣的事件,broadcast receivers也沒(méi)有UI界面。apk可以直接包含這個(gè)component也可以在運(yùn)行的時(shí)候注冊(cè)一個(gè)。

4、Android  apk
這個(gè)按翻譯地來(lái)說(shuō)就是提供一個(gè)公共接口讓?xiě)?yīng)用程序?qū)⒈旧淼臄?shù)據(jù)共享出來(lái),其他應(yīng)用可以根據(jù)這些公共接口訪(fǎng)問(wèn)這些數(shù)據(jù)。它提供了一個(gè)適配口content  resolver,應(yīng)用程序通過(guò)這個(gè)適配來(lái)操作content provider。當(dāng)應(yīng)用程序開(kāi)始執(zhí)行的時(shí)候首先讀取manifest,然后根據(jù)這個(gè)xml配置文件來(lái)初始化一些component,然后它就停止等待intent的到來(lái)了。

因此在一個(gè)應(yīng)用中非常重要的幾個(gè)概念就是:component ,  manifest.xml,intent, intent-filter。而在component 中比較重要的應(yīng)該就是activity和service 。下面我們來(lái)看看一個(gè)進(jìn)程的生命周期:一個(gè)進(jìn)程被打開(kāi)之后操作系統(tǒng) 會(huì)盡量保持其運(yùn)行狀態(tài),當(dāng)發(fā)現(xiàn)內(nèi)存不足的時(shí)候系統(tǒng)會(huì)根據(jù)以下的優(yōu)先級(jí)來(lái)強(qiáng)制kill進(jìn)程:

1、empty process首先考慮被關(guān)閉的是不含任何激活的component的進(jìn)程,保留這樣的進(jìn)程的主要的原因是為了restart的時(shí)候能快一點(diǎn),因此在內(nèi)存不足的時(shí)候這類(lèi)進(jìn)程是首先考慮被kill掉的。

2、background process
其次考慮被關(guān)閉的是擁有activiry,但這個(gè)activity處于不可見(jiàn)狀態(tài)的線(xiàn)程

3、visible process
第三考慮的就是進(jìn)程的activity可見(jiàn),但是卻不是在forground正在與用戶(hù)交互的那個(gè)。

4、forground
***考慮的才是activiry處于最前段的進(jìn)程。在這里還有一個(gè)問(wèn)題,那就是如果一個(gè)進(jìn)程綁定了一個(gè)service,那他的優(yōu)先級(jí)是比一個(gè)后臺(tái)運(yùn)行的進(jìn)程要高的,也就是說(shuō)它相比之下不那么容易被kill 掉。

  • Google放棄“不做惡”? 意欲壟斷Android

  • 圖解Android應(yīng)用程序構(gòu)建原理

  • 淺析Android DDMS性能問(wèn)題

  • 探索Android DDMS工作原理

  • Android 源代碼操作技巧說(shuō)明

因此在設(shè)計(jì)應(yīng)用程序的時(shí)候綁定一個(gè)service比在進(jìn)程中開(kāi)辟一個(gè)線(xiàn)程來(lái)運(yùn)行長(zhǎng)時(shí)間任務(wù)要保險(xiǎn)得多。在manifest.xml中每個(gè)component都有一個(gè)process選項(xiàng)來(lái)指定其運(yùn)行的進(jìn)程可以讓一個(gè)應(yīng)用程序的Android  apkt運(yùn)行在一個(gè)進(jìn)程。

也可以讓多個(gè)應(yīng)用程序的component運(yùn)行在一個(gè)進(jìn)程來(lái)共享數(shù)據(jù)。在java中專(zhuān)門(mén)提供了一種語(yǔ)言IDL用來(lái)自動(dòng)生成遠(yuǎn)端進(jìn)程調(diào)用的源碼,應(yīng)用只需要實(shí)現(xiàn)它的一些接口就可以了,這就方便了RPC編程。

關(guān)于“Android中的apk格式有什么用”這篇文章的內(nèi)容就介紹到這里,感謝各位的閱讀!相信大家對(duì)“Android中的apk格式有什么用”知識(shí)都有一定的了解,大家如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注億速云行業(yè)資訊頻道。

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀(guān)點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI