在onDestroy()执行时是否可以调用onStartCommand()?

时间:2014-11-25 08:46:51

标签: android service android-service android-lifecycle

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

  1. Android会创建一个新的服务实例吗?
  2. 是否会调用当前服务的onStartCommand()
  3. 还有其他事情发生了吗?

1 个答案:

答案 0 :(得分:3)

在UI线程(也称为主线程)上调用

onDestroy()onStartCommand()也是如此。因此,在从onDestroy()返回之前,不能调用其他框架方法 - 不仅对于此Service,而且对于在同一进程中运行的任何其他Service。此外,不会调用任何其他组件(Activity等)的框架回调。

当然,实际上,如果你真的在任何组件的生命周期方法中阻塞了10秒或更长时间,你几乎肯定会看到一个Application Not Responding消息。