目前,我有服务,它在不同的流程中运行。这是主要活动中的代码。
@Override
public void onStart() {
super.onStart();
// Start auto complete service.
autoCompleteServiceIntent = new Intent(AutoCompleteService.class.getName());
startService(autoCompleteServiceIntent);
bindService(autoCompleteServiceIntent, serviceConnection, 0);
}
@Override
public void onStop() {
super.onStop();
// Stop auto complete service.
unbindService(serviceConnection);
stopService(autoCompleteServiceIntent);
autoCompleteServiceIntent = null;
}
该服务具有以下特征。
我想知道,我应该在 onStart / onStop 对中启动/停止服务吗?或者,我应该在 onCreate / onDestroy 中开始/停止服务。
我能想到的好处是,当在onStart / onStop对中使用代码时,只要活动不可见,我就可以立即释放未使用的内存。因此,释放大量系统资源。注意,即使活动已退出,也不会立即立即调用onDestroy。
不好的是,如果我按HOME并经常回来,我的服务将经常执行内存加载/卸载。这可能会导致我的应用程序执行速度相当慢。
答案 0 :(得分:3)
在您的方案中,您应该停止服务 onDestroy 原因是,当活动被自我销毁,被取消关闭时或系统需要内存时调用它。这将是结束服务的合适场所。
当您在应用程序中来回移动或访问家中时,甚至会调用 onStop 。在主页上没有调用 onDestroy 的原因是活动尚未销毁。如果您关闭活动后退,它将调用 onDestroy 。