目前,我有一个运行在独立进程中的服务。下面是主活动的代码:
@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键并返回,我的服务将频繁执行内存加载/卸载操作。这可能会导致我的应用程序运行速度明显变慢。