三星S10用多久就會卡?
與其說三星S10用多久就會卡不如說是安卓用多久就會卡?這是受限于安卓底層的運行機制導致的,與三星并無多大關聯。
與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
二、兩者后臺制度不同1.iOS采用“偽后臺”的形式(1)iOS系統的后臺機制過程當我們程序從前臺退到后臺(按home)鍵后,將執行程序的委托方法。當應用程序掉到后臺時,執行該方法
當一個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點唱機,車載導航,智能手表等等。