當前位置: 華文問答 > 數碼

為什麽安卓不采用墓碑機制?

2017-04-10數碼

因為android的後台思路和ios完全不同

android提供了service用於執行後台任務,所以與此同時,android假定所有activity只要離開前台就是隨時可以釋放資源的

android的activity被置入後台後會呼叫onPause,此時程式就應該保存一些需要保存的東西了

如果記憶體充足,那麽activity不會被銷毀,下次開啟時呼叫onResume

而記憶體不足時,後台activity可以被釋放,僅記錄intent,下次開啟時使用相同的intent重建activity

而且因為棧也被保留了,activity順序也是不會遺失的,比如a頁開啟b頁再開啟c頁,恢復到c頁後返回還是重建一個b頁

對於遵守規範的程式來說,這樣的後台管理非常高效,但不遵守規範的程式比如qq,在處理intent後沒有及時的刪除不需要再次處理的intent,比如分享檔後qq置於後台被釋放,再次從最近任務啟動qq又會發送一次檔

也就是說在android裏,activity先天就是不應該有後台的,留著是記憶體充裕時的慈悲,但完全可以隨時殺死

而後台任務,應該交給service實作,service只有在記憶體嚴重不足的時候,會有一定可能殺死

這也是android強大的根源,android可以很輕松的執行大量的持續真後台任務,比如7x24執行一個http伺服端,但在ios上這很難做到

在android釋出之初的時候就定下了activity,service,receiver三大元件的結構,在那個時候可以說是非常先進的