Android和iOS的區別(從開發角度比較)

一、兩者運行機制不同

1. iOS采用的是沙盒運行機制

(1)沙盒機制

? ? 出于安全考慮,iPhone對于安裝在上面的應用程序有所限制,這個限制就是應用程序只能在為該改程序創建的文件系統中讀取文件,不可以去其它地方訪問,此區域被成為沙盒,所以所有的非代碼文件都要保存在此,例如圖像,圖標,聲音,映像,屬性列表,文本文件等。總體來說沙盒就是一種獨立、安全、封閉的空間。

(2)沙盒機制的特點

? ? 每個應用程序都有自己的存儲空間。每個應用程序都不可以翻過自己的圍墻去訪問別的存儲空間的內容(已經越獄的除外)。在訪問別人沙盒內的數據時需要訪問權限。沙盒(sandbox)的核心內容是:sandbox對應用程序執行各種操作的權限限制

(3)應用程序的沙盒目錄

? ? 應用程序沙盒目錄下有三個文件夾Documents、Library(下面有Caches和Preferences目錄)、tmp。

Documents:保存應用運行時生成的需要持久化的數據iTunes會自動備份該目錄。蘋果建議將在應用程序中瀏覽到的文件數據保存在該目錄下。

Library/Caches:一般存儲的是緩存文件,例如圖片視頻等,此目錄下的文件不會再應用程序退出時刪除,在手機備份的時候,iTunes不會備份該目錄。

Library/Preferences:保存應用程序的所有偏好設置iOS的Settings(設置),我們不應該直接在這里創建文件,而是需要通過NSUserDefault這個類來訪問應用程序的偏好設置。iTunes會自動備份該文件目錄下的內容。

tmp:臨時文件目錄,在程序重新運行的時候,和開機的時候,會清空tmp文件夾。

2.安卓采用的是虛擬機運行機制

(1)什么是Dalvik虛擬機

? ? Dalvik是Google公司自己設計用于Android平臺的Java虛擬機,它是Android平臺的重要組成部分,支持dex格式(Dalvik Executable)的Java應用程序的運行。dex格式是專門為Dalvik設計的一種壓縮格式,適合內存和處理器速度有限的系統。Google對其進行了特定的優化,使得Dalvik具有高效、簡潔、節省資源的特點。從Android系統架構圖知,Dalvik虛擬機運行在Android的運行時庫層。

(2)Dalvik虛擬機的功能

? ? Dalvik作為面向Linux、為嵌入式操作系統設計的虛擬機,主要負責完成對象生命周期管理、堆棧管理、線程管理、安全和異常管理,以及垃圾回收等。Dalvik充分利用Linux進程管理的特定,對其進行了面向對象的設計,使得可以同時運行多個進程,而傳統的Java程序通常只能運行一個進程,這也是為什么Android不采用JVM的原因。Dalvik為了達到優化的目的,底層的操作大多和系統內核相關,或者直接調用內核接口。另外,Dalvik早期并沒有JIT編譯器,直到Android2.2才加入了對JIT的技術支持。

(3)Dalvik虛擬機具有以下特點

·?使用dex格式的字節碼,不兼容Java字節碼格式

·?代碼密度小,運行效率高,節省資源

·?常量池只使用32位的索引

·?有內存限制

·?默認棧大小是12KB(3個頁,每頁4KB)

·?堆默認啟動大小為2MB,默認最大值為16MB

·?堆支持的最小啟動大小為1MB,支持的最大值為1024MB

·?堆和棧參數可以通過-Xms和-Xmx修改

詳細參考:https://www.cnblogs.com/lao-liang/p/5111399.html

二、兩者后臺制度不同

1.iOS采用“偽后臺”的形式

(1)iOS系統的后臺機制過程

? ? 當我們程序從前臺退到后臺(按home)鍵后,將執行程序的委托方法。

//?當應用程序掉到后臺時,執行該方法

-(void)applicationDidEnterBackground:(UIApplication?*)application{

}

? ? 當一個iOS應用被送到后臺,它的主線程會被暫停。你用?NSThread 的detachNewThreadSelector:toTar get:withObject:類方法創建的線程也被掛起了。應用程序只給了我們可憐的一點點時間(也就是秒級別的)來處理東西,然后,所有的線程都被掛起了。這個時候APP依然駐留在內存中,這種狀態下,不調用蘋果已開放的幾種后臺方法,程序便不會運行;如果在這個時候,使程序繼續運行,則為后臺狀態;如果當前內存將要不夠用時,系統會自動把之前掛起狀態下的APP請出內存。所以我們看到,有些時候打開APP時,還是上次退出時的那個頁面那些數據,有時則是重新從閃屏進入。

(2)iOS系統后臺機制大概可以分為5種狀態

·?Not Running:APP沒有啟動,也沒有后臺運行;

·?Active:用戶正在使用APP,比如說我們聊微信看網頁的時候,APP就處于Active狀態;

·??Inactive:這是一個過渡的狀態,APP雖然打開了,但是用戶沒有跟APP有任何互動操作;

·??Background:APP在后臺運行,微信會在沒有打開的時候接收消息;

·?Suspended:APP雖然在后臺運行,但是處于休眠狀態,只占用一點內存。

2. 安卓中任何程序都在后臺運行,直到沒有內存才會關閉

(1)android后臺運行機制

? ? android上的應用是帶有獨立虛擬機的,也就是每開一個應用就會打開一個獨立的虛擬機,每個app都有自己的進程,每個進程都有自己的內存空間,這樣設計的原因是可以避免虛擬機崩潰導致整個系統崩潰,但代價就是需要更多內存。以上這些設計確保了android的穩定性,正常情況下最多單個程序崩潰,但整個系統不會崩潰。

(2)安卓的進程從高到底分為5種

·?前臺進程:正在與用戶交互的進程,通俗來講就是你當前使用app的進程;

·?可見進程:可以被用戶看到,但是沒有和用戶交互,例如一個activity以對話框的形式覆蓋在當前activity上面,當前activity可以被用戶看到,但是不和用戶交互;

·?服務進程:這個相信大家都熟悉,也就是我們常說的service,能夠運行在后臺,常見的有音樂類的app;

·?后臺進程:注意,這個后臺進程不要和服務進程搞混了,它的意思是說當前app在后臺運行,例如我啟動了app,然后點擊home返回到桌面,那么這個app就會被切回到后臺進程;

·?空進程:空進程指的是在這些進程內部,沒有任何東西在運行。保留這種進程的的唯一目的是用作緩存,以縮短該應用下次在其中運行組件所需的啟動時間。

三、兩者最高權限指令不同

1.iOS中用于UI指令權限最高。

2.安卓中數據處理指令權限最高。

四、推送機制

1.iOS在軟件關閉的情況下,依然可以接收推送信息

? ? 手機消息當然都是通過服務器推送到我們手機上的,對于iOS的用戶來說,蘋果有APNs服務器來負責消息的推送。當你第一次使用APP時,會詢問是否接收通知,如果你選擇了是,那么服務器就會記錄你的ID,當有消息通知的時候,這些數據是先推送到蘋果的服務器中,然后通過蘋果的APN服務器推送到用戶手機上的。 這樣的設計讓軟件徹底關閉的時候還可以接收到消息通知,一方面釋放內存,一方面也不會耽誤接收消息。

2.?Android在軟件關閉的情況下,無法接收推送信息

? ? 在Android手機來說,谷歌也有類似的GCM服務器來推送消息,不過因為國內的手機都沒有谷歌服務無法收到谷歌GCM服務器推送的消息。安卓的推送都是通服務來實現的,就算應用沒有啟動但是服務還在一樣可以收到推送。所以只能是安卓自己啟動Services來實現推送,當應用殺死后Services如果被殺死就無法收到推送。

五、開源性

? ? Android系統特點。Android系統由于是開放源代碼,所以支持它的手機很多,可以免費使用的軟件也很多,可以不斷升級。iOS系統特點。他的主要特點是使用方便,靈活,但是由于其封閉的系統,可擴展性比較差。android相對ios來說更加開放.輕松的覆蓋移動設備的中低端市場,甚至不僅僅移動市場,還有TV,筆記本,機頂盒,路由器,卡拉OK點唱機,車載導航,智能手表等等。

?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 228,461評論 6 532
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 98,538評論 3 417
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 176,423評論 0 375
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 62,991評論 1 312
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,761評論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,207評論 1 324
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,268評論 3 441
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,419評論 0 288
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 48,959評論 1 335
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 40,782評論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 42,983評論 1 369
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,528評論 5 359
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,222評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,653評論 0 26
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,901評論 1 286
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,678評論 3 392
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 47,978評論 2 374

推薦閱讀更多精彩內容