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
给你,先生,我说谢谢你。 –