android應用被系統回收
『壹』 Android-Android中service與application的生命周期有關系嗎
有關系的,在Android中進程按優先順序可以分為五類,優先順序從高到低排列:
1.前台進程 該進程包含正在與用戶進行交互的界面組件,比如一個Activity。
2.可視進程 該進程中的組件雖然沒有和用戶交互,但是仍然可以被看到。
3.服務進程 該進程包含在執行後台操作的服務組件,比如播放音樂的Service。
4.後台進程 該進程包含的組件沒有與用戶交互,用戶也看不到 Service。
5.空進程 沒有任何界面組件、服務組件,或觸發器組件。
Android系統是進程託管的,也就是說進程都是由系統來管理,系統會按照特定的算來來回收這些進程。在回收中秉承幾個原則:
1. 盡量延長進程的生命周期,不到必須的情況下不會回收,因為系統回收進程會影響用戶體驗
2. 按優先順序從低到高進行回收
3. 同等優先順序的進程越近使用越晚回收。
通過上面這些解釋,進程過一段時間後是會被回收的,但要遵循上面的這些原則,service和application的生命周期有關,只要進程被回收,那麼它所佔用的所有資源將被回收。
『貳』 不使用的Android軟體需要退出嗎
結論:全球84%的Android用戶中,許多人可能並未充分利用系統的全部功能。本文將揭示一些關於Android使用的常見誤區,並解讀實用功能,幫助你更好地利用你的Android設備。誤區:必須退出不使用的軟體嗎?
在Android初期,內存管理成為熱議話題。由於早期設備內存有限,人們普遍認為關閉不必要的進程以提升性能。然而,Android的內存管理並非簡單地強制關閉,而是採用掛起機制,保留進程在內存中,只在需要時才運行,以減少內存佔用。
盡管如此,如果你的手機出現卡頓,內存不足,Android的Last Recently Used(最近使用過的程序)垃圾回收機制會自動結束最不常用的應用,以釋放內存。但這並不是最佳解決方案,重啟手機是解決內存問題的直接方法,尤其是當後台運行的低質量程序爭奪內存時。
總結,盡管Android系統復雜,但理解其內存管理和優化策略可以幫助你更高效地使用設備。下次當你想要退出一個看似沒在運行的程序時,不妨思考一下,它是否真的需要被關閉,或者是否可以通過清理後台程序來提升手機性能。
『叄』 android進程被系統回收(殺死)
Activity綁定Service,那麼這個service的生命周期跟activity相關。會隨著activity結束而結束。
綁定的service跟activity是同一個進程的。
如果service配置一個單獨的進程,應該是通過startService來啟動的,bindService不行吧?
系統資源不足時,會有一個策略來回收進程,優先順序的回收順序是 Empty process、Background process、Service process、Visible process、Foreground process。
參見www.cnblogs.com/bastard/archive/2012/08/17/2644169.html
『肆』 android app後台運行一段時間後,在回到前台,之前的一些對象會被回收
出現這種情況最主要的原因還是內存不足的問題,被系統自動回收了。如果LZ想保存現場的話,建議LZ使用onSaveInstanceState這個方法保存現場
『伍』 回收站里有個android能刪嗎
回收站里有個android能刪。
回收站里有個android能刪,但是會重新生成的,這個是系統的緩存文件,刪了之後可能你存在手機上的一些東西就不見了,所以最好不要輕易刪除。電腦上的你不認識的東西最好不要刪除,清理電腦可以刪除明確不要的東西,以防出現意外。
『陸』 如何防止android應用中的service被系統回收
永不被kill是不可能的,android系統應用都有可能會被kill,不要說用戶應用了,只能說被kill以後還能重新啟動。
Android中,當Service被kill後,如果重啟需要使用BroadcastReceiver來實現,即廣播接收者,例如利用BroadcastReceiver注冊網路廣播或者開關機廣播,當接收到廣播後直接啟動service,這樣就可以保證service被kill後,自動啟動。
實現代碼:
1.在配置文件AndroidManifest.xml中向系統注冊BroadcastReceiver
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED" />
<action android:name="android.net.conn.CONNECTIVITY_CHANGE" />
</intent-filter>
2.需要添加相應許可權
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
3.在Receiver中就可以添加開機,或者網路狀態改變後需要進行的操作
public class BootCompletedReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
}
}
4.執行操作,Intent intent = new Intent(context,Service.class); context.startService(intent); 這樣即可開機,或者網路狀態改變後啟動Service了。