Should I start/stop service in onStart/onStop, or onCreate/onDestroy
目前,我有服务,它在不同的流程中运行。这是主要活动中的代码。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | @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并经常回来,我的服务将经常执行内存加载/卸载。这可能导致我的应用程序执行速度相当慢
在您的场景中,您应该停止服务onDestroy的原因是,当活动被自我销毁,被取消关闭时或者系统需要内存时调用它。 这将是结束服务的合适场所。
当您在申请中来回移动或回家时,甚至会在其他地方调用onStop。 在主页上没有调用onDestroy的原因是活动还没有被销毁。 如果您关闭活动按下它将调用onDestroy。