gpt4 book ai didi

android - 我应该在 onStart/onStop 或 onCreate/onDestroy 中启动/停止服务

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:04:27 26 4
gpt4 key购买 nike

目前,我有服务,它在单独的进程中运行。这是主要 Activity 中的代码。

@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;
}

该服务将具有以下特征。

  • 服务在单独的进程中运行。原因是,它会将大量数据加载到内存中。让服务在单独的进程中运行,将使我们有更大的内存限制。
  • 一旦主 Activity 停止,服务也将停止。

我想知道,我是否应该在onStart/onStop 对中启动/停止服务?或者,我应该在 onCreate/onDestroy 中启动/停止服务。

我能想到的好处是,当代码成对出现 onStart/onStop 时,只要 Activity 不可见,我就可以立即释放未使用的内存。因此,释放大量系统资源。注意,onDestroy 并不总是被立即调用,即使 Activity 已经退出。

不好的是,如果我频繁的按HOME再回来,我的服务会频繁的进行内存加载/卸载。这可能会导致我的应用程序执行速度相当慢。

最佳答案

在您的场景中,您应该停止服务 onDestroy 的原因是,当 Activity 被销毁时,它会调用它自己,取消抵押品赎回权或在需要内存时由系统调用。因此,这将是结束服务的合适位置。

当您在应用程序中来回移动或回家时,还有什么地方会调用 onStoponDestroy 没有在主屏幕上调用的原因是 Activity 还没有被销毁。就像您关闭 Activity 按回键一样,它会调用 onDestroy

关于android - 我应该在 onStart/onStop 或 onCreate/onDestroy 中启动/停止服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14259642/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com