当onDestroy()正在执行时onStartCommand()会被调用吗?

问题描述:

我的服务正在执行onDestroy()通过致电stopSelf()引发。我在onDestroy()中进行了更持久的清理操作(可以是10,30或90秒)。如果我的服务现在开始,会发生什么?当onDestroy()正在执行时onStartCommand()会被调用吗?

  1. Android会创建一个新的服务实例吗?
  2. 将调用当前服务的onStartCommand()
  3. 发生了什么?

onDestroy()在UI线程(也称为主线程)上被调用。那么onStartCommand()。因此,在从onDestroy()返回之前,不能调用其他框架方法 - 不仅对于此Service而且对于在同一过程中运行的任何其他Service。此外,任何其他组件(Activity等)的框架回调都不会被调用。当然,在实践中,如果真的在任何组件的任何生命周期方法中阻塞10秒或更多秒,几乎肯定会看到“应用程序无响应”消息。

+0

我明白了,我没有想过。因此,我将在'onDestroy()'中启动一个线程,稍后将会完成。我希望系统不会杀死这个进程(从我以前的经验来看,它不会)。 – OneWorld 2014-11-25 08:56:33

+0

@OneWorld的确是要走的路。看到这个 - http://*.com/questions/9479311/performing-long-running-operation-in-ondestroy。但是请注意,在你的线程完成任务之前,你的进程仍然有可能被杀死。详情请看这里:http://developer.android.com/guide/components/processes-and-threads.html#Lifecycle – curioustechizen 2014-11-25 09:08:14