最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Android App的運(yùn)行環(huán)境及Android系統(tǒng)架構(gòu)概覽

 更新時(shí)間:2016年03月08日 16:39:34   作者:iam_wingjay  
這篇文章主要介紹了Android App的運(yùn)行環(huán)境及Android系統(tǒng)架構(gòu)概覽,并對(duì)應(yīng)用程序進(jìn)程間隔離機(jī)制等知識(shí)點(diǎn)作了介紹,需要的朋友可以參考下

Android基于linux內(nèi)核,面向移動(dòng)終端的操作系統(tǒng)。主要包括以下幾個(gè)方面:

Application Framework:
這一層為應(yīng)用開(kāi)發(fā)者提供了豐富的應(yīng)用編程接口,如 Activity Manager,Content Provider,Notification Manager,以及各種窗口 Widget 資源等。所有的APP都是運(yùn)行在這一層之上。
Dalvik 虛擬機(jī):
Dalvik VM采用寄存器架構(gòu),而不是JVM的棧架構(gòu),更適于移動(dòng)設(shè)備。java源代碼經(jīng)過(guò)編譯成為.class字節(jié)碼文件,然后由谷歌提供的 dx工具將其轉(zhuǎn)化為Dalvik可識(shí)別的.dex文件。
Linux kernel:
每個(gè)APP應(yīng)用程序由一個(gè)獨(dú)立的Dalvik VM來(lái)解釋執(zhí)行,而一個(gè)Dalvik VM實(shí)例對(duì)應(yīng)一個(gè)linux內(nèi)核進(jìn)程。
所以說(shuō),每個(gè)APP之間完全隔離,資源獨(dú)立。使得每個(gè)APP更加安全,但也不利于進(jìn)程間通信

201638163718507.png (572×114)

Android官方介紹

201638163824918.png (486×740)

Android 系統(tǒng)架構(gòu)

Application framework
大部分開(kāi)發(fā)者十分關(guān)心這一層。你必須要了解開(kāi)發(fā)者會(huì)接觸到的所有API接口,大部分接口都與硬件抽象層(HAL層)接口一一對(duì)應(yīng),而且它們會(huì)告訴你如何實(shí)現(xiàn)你自己的驅(qū)動(dòng)。

Binder IPC
Binder進(jìn)程間通信機(jī)制幫助Application framework層能夠跨進(jìn)程并且調(diào)用系統(tǒng)級(jí)服務(wù)。從根本上講,它幫助高級(jí)別的framework的API接口與Android系統(tǒng)服務(wù)進(jìn)行交互。

系統(tǒng)服務(wù)
大部分Application framework api具備的功能都要依靠與某種系統(tǒng)服務(wù)進(jìn)行通信從而操作底層硬件。系統(tǒng)服務(wù)根據(jù)不同的功能分成了若干模塊組件,例如Window Manager, Search Service, or Notification Manager。系統(tǒng)服務(wù)主要包含兩大塊:系統(tǒng)和媒體。前者對(duì)應(yīng)的服務(wù)包含如Window Manager 或 Notification Manager,后者對(duì)應(yīng)的服務(wù)都與播放或記錄媒體有關(guān)。
硬件抽象層Hardware abstraction layer (HAL)
硬件抽象層可以作為一個(gè)標(biāo)準(zhǔn)接口讓Android系統(tǒng)調(diào)用設(shè)備驅(qū)動(dòng)層而不用管這些驅(qū)動(dòng)和硬件時(shí)如何實(shí)現(xiàn)的。


Linux Kernel
大多數(shù)情況下,你自己開(kāi)發(fā)設(shè)備驅(qū)動(dòng)和開(kāi)發(fā)linux設(shè)備驅(qū)動(dòng)時(shí)一樣的。Android挑選了一個(gè)特定的linux內(nèi)核版本,這個(gè)版本包含了如wakelocks(一個(gè)內(nèi)存管理系統(tǒng)),Binder IPC驅(qū)動(dòng)和其他一些特征,這些特征對(duì)于像Android一樣的移動(dòng)嵌入式平臺(tái)都非常重要。你也可以根據(jù)自己的需求選擇合適的kernel版本,只要它能支持一些必要的屬性如Binder IPC驅(qū)動(dòng)等。但是,我們?nèi)匀煌扑]你使用最新版本的Android內(nèi)核。

相關(guān)知識(shí)點(diǎn):
應(yīng)用程序進(jìn)程間隔離機(jī)制:
Android系統(tǒng)包括四層架構(gòu):從底層往上依次是Linux kernel層、C/C++函數(shù)庫(kù)與Android運(yùn)行時(shí)環(huán)境(Dalvik VM等)層、Android Framwork框架層、應(yīng)用程序?qū)?。其中,Android運(yùn)行時(shí)環(huán)境層類(lèi)似Java里的JRE層,主要用來(lái)運(yùn)行java程序,不過(guò)此處的虛擬機(jī)是Dalvik虛擬機(jī)。每一個(gè)Android應(yīng)用程序都運(yùn)行在單獨(dú)的Davlik進(jìn)程里,Dalvik虛擬機(jī)針對(duì)同時(shí)高效運(yùn)行多個(gè)虛擬機(jī)而優(yōu)化,在這一層實(shí)現(xiàn)了應(yīng)用程序的進(jìn)程間隔離。

Dalvik虛擬機(jī)與JVM區(qū)別:

JVM直接從.class或Jar包中加載字節(jié)碼解釋運(yùn)行,Dalvik通過(guò)DX工具將.class文件編譯為.dex文件(Dalvik Executable)來(lái)運(yùn)行。
JVM采用棧結(jié)構(gòu),而Dalvik采用寄存器結(jié)構(gòu),更適于移動(dòng)設(shè)備。
為何Android要采用Dalvik虛擬機(jī)而不是JVM呢?

大多數(shù)虛擬機(jī)(包括JVM)都是基于棧的,而Dalvik虛擬機(jī)則是基于寄存器的,性能更好,不過(guò)也導(dǎo)致硬件通用性略差;
運(yùn)行專(zhuān)有.dex文件。DX工具對(duì).class文件編譯時(shí),去除里面的冗余信息,并把所有.class文件整合到一個(gè)文件中,提高了性能。同時(shí)DX工具還會(huì)對(duì).dex文件進(jìn)行性能優(yōu)化。

相關(guān)文章

  • Android中SurfaceView和普通view的區(qū)別及使用

    Android中SurfaceView和普通view的區(qū)別及使用

    SurfaceView第一印象它是一個(gè)view,因?yàn)樗^承了View,本文主要介紹了SurfaceView和普通view的區(qū)別及使用,感興趣的小伙伴們可以參考一下
    2021-06-06
  • Android列表點(diǎn)擊事件定義的一些思考

    Android列表點(diǎn)擊事件定義的一些思考

    大家好,本篇文章主要講的是Android列表點(diǎn)擊事件定義的一些思考,感興趣的同學(xué)趕快來(lái)看一看吧,對(duì)你有幫助的話記得收藏一下,方便下次瀏覽
    2021-12-12
  • Android自定View實(shí)現(xiàn)滑動(dòng)驗(yàn)證效果的代碼

    Android自定View實(shí)現(xiàn)滑動(dòng)驗(yàn)證效果的代碼

    這篇文章主要介紹了Android自定View實(shí)現(xiàn)滑動(dòng)驗(yàn)證效果,代碼分為自定義屬性代碼和自定義view代碼及使用方法,本文給大家介紹的非常詳細(xì),需要的朋友可以參考下
    2021-12-12
  • Android開(kāi)發(fā)實(shí)現(xiàn)圖片圓角的方法

    Android開(kāi)發(fā)實(shí)現(xiàn)圖片圓角的方法

    這篇文章主要介紹了Android開(kāi)發(fā)實(shí)現(xiàn)圖片圓角的方法,涉及Android針對(duì)圖形圖像的相關(guān)操作技巧,需要的朋友可以參考下
    2016-10-10
  • Kotlin淺析null操作方法

    Kotlin淺析null操作方法

    Kotlin對(duì)比于Java的一個(gè)最大的區(qū)別就是它致力于消除空引用所帶來(lái)的危險(xiǎn)。在Java中,如果我們嘗試訪問(wèn)一個(gè)空引用的成員可能就會(huì)導(dǎo)致空指針異常NullPointerException(NPE)的出現(xiàn)。在Kotlin語(yǔ)言中就解決了這個(gè)問(wèn)題,下面來(lái)看看它是如何做到的
    2022-08-08
  • Dcloud的native.js直接撥打電話Android實(shí)例代碼

    Dcloud的native.js直接撥打電話Android實(shí)例代碼

    本文為大家分享了3種利用Dcloud的native.js直接撥打電話實(shí)例代碼,由于iOS系統(tǒng)的限制所以只有Android版實(shí)例
    2018-09-09
  • Android Studio 視頻播放失敗 start called in state1 異常怎么解決

    Android Studio 視頻播放失敗 start called in state1 異常怎么解決

    很多朋友問(wèn)小編在使用MediaPlayer播放音頻時(shí)報(bào)出 E/MediaPlayerNative: start called in state 1, mPlayer(0x0)問(wèn)題,該如何處理呢,今天小編給大家?guī)?lái)了Android Studio 視頻播放失敗 start called in state1 異常問(wèn)題,需要的朋友可以參考下
    2020-03-03
  • Android 修改app圖標(biāo)和名稱(chēng)的方法

    Android 修改app圖標(biāo)和名稱(chēng)的方法

    下面小編就為大家分享一篇Android 修改app圖標(biāo)和名稱(chēng)的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-01-01
  • Android中TextView局部變色功能實(shí)現(xiàn)

    Android中TextView局部變色功能實(shí)現(xiàn)

    這篇文章給大家詳細(xì)講解了一下Android中TextView實(shí)現(xiàn)部分文字不同顏色的功能實(shí)現(xiàn)過(guò)程,有這方面需要的朋友們一起學(xué)習(xí)下吧。
    2017-12-12
  • Android開(kāi)發(fā)之圖形圖像與動(dòng)畫(huà)(一)Paint和Canvas類(lèi)學(xué)習(xí)

    Android開(kāi)發(fā)之圖形圖像與動(dòng)畫(huà)(一)Paint和Canvas類(lèi)學(xué)習(xí)

    Paint類(lèi)代表畫(huà)筆,用來(lái)描述圖形的顏色和風(fēng)格,如線寬,顏色,透明度和填充效果等信息;Canvas類(lèi)代表畫(huà)布,通過(guò)該類(lèi)提供的構(gòu)造方法,可以繪制各種圖形;感興趣的朋友可以了解下啊,希望本文對(duì)你有所幫助
    2013-01-01

最新評(píng)論

资溪县| 聂拉木县| 商水县| 天长市| 锦屏县| 高平市| 满城县| 凤台县| 友谊县| 枞阳县| 张家口市| 承德市| 宁津县| 辽宁省| 收藏| 屯留县| 乐东| 合山市| 东宁县| 新绛县| 门头沟区| 松潘县| 射阳县| 裕民县| 那坡县| 泗阳县| 姚安县| 郓城县| 酉阳| 新沂市| 美姑县| 湖口县| 张家口市| 长沙县| 宽甸| 高青县| 米脂县| 平舆县| 金门县| 吉林省| 怀集县|