我在某處讀取廣播接收器在與應用程序不同的進程中運行,因此它有自己的堆。現在,如果在廣播接收機中,我從我的應用程序開始一個活動,這是否會在應用程序的進程中運行,還是仍在廣播接收器的進程中?從廣播接收器啓動的活動是否與應用程序使用相同的堆?
這個問題的答案對於本機堆(蜂窩前API)是否也適用?
想知道,因爲當我收到推送通知時,我必須啓動一個內存昂貴的活動/屏幕,並且如果我正處於某些其他內存昂貴活動的中間,應用程序中可能會導致內存不足錯誤。但是,如果它是一個單獨的堆(更具體地說 - 本地堆,因爲內存消耗來自位圖並且我正在爲API預蜂窩開發),所以我不必擔心它。
注「讀的地方」是指:Why so much memory? 尼古拉Chorniy的帖子
「有我用來避免的OutOfMemoryError一個棘手的解決辦法我註冊了一個接收器,使其運行在不同的過程...... 「
我編輯了我的文章,閱讀http://stackoverflow.com/questions/4726129/why-so-much-memory - Nikolay Chorniy的帖子。那是錯的嗎?或者我理解錯了什麼? – Ixx 2012-07-24 22:05:47
@lxx:在您引用的文章中,開發人員*特別*將他的'BroadcastReceiver'放在一個單獨的過程中。它不會自動發生。此外,用戶可能不會意識到您正在使用的額外內存及其對設備的影響。 Google員工多次表示,使用第二個流程對業務不利。 AFAIK,默認情況下,您的活動將回到您的常規流程中,除非您還安排它通過清單運行在第二個流程中,您對接收方的做法。 – CommonsWare 2012-07-24 22:12:02
好吧,我明白了。感謝您的回答! – Ixx 2012-07-24 22:19:36