0
一些問題從official doc:關於Android服務生命週期
只有當內存不足時,它必須恢復系統資源用於具有用戶焦點的活動的Android系統將強制停止服務。如果該服務被綁定到具有用戶焦點的活動,那麼它不太可能被殺害
當服務確實是由系統終止,是onStop()
或onDestroy()
被調用?
考慮下面的代碼片段:
public class MyService extends Service {
int count = 0;
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
count++;
return START_STICKY;
}
...
}
通過onStartCommand()
返回START_STICKY
,我想爲MyService會被系統殺死後重新創建自身內存不足的情況。每次重新創建MyService時,計數值是否會重置爲0?
我的不好,'onStop()'確實不存在於Service上。 「onDestroy()」意味着什麼可能會或可能不會被調用?是否有某種方法可以確保在這種低內存情況下總是會調用onDestroy()? –
@HendraAnggrian:否。首先,如果系統RAM的需求是非常高的優先級(例如來電),Android將不會花時間執行'onDestroy()',因爲這可能需要很長時間。其次,內存不足並不是您的流程終止的唯一原因。例如,如果用戶在設置中的應用程序屏幕上按下強制停止,則直接終止您的進程,而不會在正在運行的組件上調用onDestroy()。 'onDestroy()'用於輕量級清理,但不要依賴它。 – CommonsWare
給你,先生,我說謝謝你。 –