2016-01-31 185 views
1

任何時候我嘗試關閉我的前臺服務時,即使沒有打開任何活動,我的應用程序也會繼續運行。我做了一些分配和函數跟蹤測試,但注意到,但是,我的應用程序仍然是打開的,並且使用了幾MB的內存,關閉服務後我的方法都沒有被調用。只有Java和Android的東西。哦,看起來我的應用程序在這期間也會泄漏內存。根據我的應用程序的Java堆,有數千個FinalizerReferences實例化。這會導致這麼大的問題,或者爲什麼會出現這種情況?應用程序在關閉後運行

這是它的樣子:

enter image description here

回答

0

這就是android如何工作,你擁有的每一項活動和服務,只在一個稱爲UI線程的線程內執行,它本身和你創建的其他線程在一個進程中運行。直到systme有新的東西,足夠的內存,所以如果你的用戶要再次運行程序它推出的儘可能快

Android不關閉此進程。但是您可以使用exit()函數終止整個過程。

其實活動或服務是不是哪個程序進程內的UI線程中運行的程序,但一段代碼,現在這個過程是你的程序,它甚至可以用廣播接收器的呼叫啓動!

1

它的默認Android屬性,應用程序繼續在後臺運行,即使在關閉了你的應用程序後,一些功能如服務等在後臺運行。要麼你強迫exis的應用程序,我wouldnt建議,或讓android自動關閉它,當它需要

+0

我不認爲這是應該發生的。如果我沒有啓動服務並關閉我的活動,那麼它會正常停止,但我認爲在關閉活動和前臺服務後,我的應用程序使用資源是正常的。它使用大約10 MB的RAM並且不會停止。我認爲,如果沒有更多的生活環境,那麼我的應用程序將自動終止。 – Ukubu

+1

怎麼樣的圖像視圖,位圖..你釋放他們 –

+0

嗯,我有一個單一的存儲一些應用程序特定的東西。其中之一是位圖的列表。在關閉應用上下文後,我需要對他們做什麼嗎? – Ukubu

0

調用finish()當你想完全關閉應用程序應殺死應用程序並釋放它的資源。

相關問題