我应该在onStart/onStop还是onCreate/onDestroy中启动/停止服务?

4

目前,我有一个运行在独立进程中的服务。下面是主活动的代码:

@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键并返回,我的服务将频繁执行内存加载/卸载操作。这可能会导致我的应用程序运行速度明显变慢。

1个回答

3
在您的场景中,您应该在 onDestroy 时停止服务,这是因为当活动自我销毁、关闭或系统需要内存时,该方法将被调用。因此,这将是结束服务的适当位置。
另外,在您的应用程序中前进和后退或访问主页时, onStop 也会被调用。 onDestroy 未在按主页键时调用,因为活动尚未被销毁。然而,如果按下返回按钮关闭活动,则将调用 onDestroy

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接