我知道,這是不推薦在Android應用程序中使用system.exit(0),但我想知道,如果這將是確定使用它的onDestroy(),因爲應用程序被允許在那一刻被殺死?使用的onDestroy()(安卓)system.exit(0)
的原因,我問的是有關this問題。
我知道,這是不推薦在Android應用程序中使用system.exit(0),但我想知道,如果這將是確定使用它的onDestroy(),因爲應用程序被允許在那一刻被殺死?使用的onDestroy()(安卓)system.exit(0)
的原因,我問的是有關this問題。
onDestroy
將被調用。有些情況下操作系統會在不致電onDestroy
的情況下殺死您的應用程序。只是一個建議的話,當然,因爲它不直接適用於您的方案。如果system.exit(0)
沒有被調用,因爲該應用程序已經被殺死,我會說你沒事。 ;-)
Activity.onDestroy
被調用,這意味着你的過程是兩種狀態之一:- 有一個在應用程序運行沒有任何其他成分(Service
或ContentProvider
)的操作系統知道。這意味着您的進程很可能會立即被操作系統殺死,或者如果系統/其他應用程序的其他部分需要物理內存,則會成爲第一個被回收的進程。因此呼籲exit(0)
將實現不多。
- 有你的過程中,該系統是知道運行的另一個組成部分。在這種情況下調用exit()
會終止該進程,從而導致您的其他組件無法使用,並可能破壞您的數據。當然,操作系統可能不太在意,但用戶可能不會感激它。 :-)
Dalvik堆的限制是OEM可配置的,但很少有OEM實際上會盡力調整它的設備,並且只能使用OS默認設置。我不記得具體的默認值,但可以肯定的是,假設每個應用程序允許低端Froyo /薑餅上的16MB和高端ICS/JB手機上的48MB之間。哎呀,我會樂觀的,並將上限提高到128MB(儘管我還沒有聽說過這種設備)。 :-)
ContentProvider
或Service
的那一刻,您不能再撥打exit()
(如上所述),您將被迫正確解決問題。你可能只是咬緊牙關,現在就做。最簡單的方法是確保在完成特定位圖時調用Bitmap.recycle()
。當然,只要你不需要在內存中保存更多的位圖,那麼這種方法就行得通,但這完全是一個完全獨立的野獸。 :-)你不應該叫sytem.exit(0),讓Android的管理應用程序。如果我明白你有內存泄漏問題。我猜是因爲位圖。所以看看這個有效顯示位圖http://developer.android.com/training/displaying-bitmaps/index.html
如果您在onDestroy()方法中調用system.exit(0),您將無法在橫向和縱向之間翻轉。
捷徑解決方案:在完成應用程序後,調用finish()而不是System.exit(0)。
正確的方法是優化您的應用中的位圖使用情況。看到這個
http://developer.android.com/training/displaying-bitmaps/index.html
在景觀和肖像之間翻轉的好點。 –
我正在製作一款始終處於風景中的遊戲,因此這不是一個大問題,但是感謝您提出這個遊戲。 – eBehbahani