32

我已经阅读了很多关于 Android 服务的内容。据我了解,生命周期是:

void onCreate() 
    void onStart(Intent intent) 
    ...
void onDestroy()

http://www.linuxtopia.org/online_books/android/devguide/guide/topics/fundamentals.html

但是没有 onStop 方法。问题:

  • 为什么没有停止方法?
  • 在我的服务上发出 stopService 请求时会发生什么?(从外部,也许是 Android 本身)。我可以检测到这个事件吗?
  • 我想强制(或至少验证)我的服务是进程中的单例。我该怎么做(或者 Android 在幕后强制执行此操作)?

对于上下文,我有一些我想在服务运行时分配和释放的资源(在“启动”中),以及另一组我想在服务处于“创建”状态时分配和释放的资源.

4

1 回答 1

59

据我了解,生命周期是:

onStart()已被弃用几年。onStartCommand()是当前的生命周期方法。

为什么没有停止方法?

因为不需要一个。

在我的服务上发出 stopService 请求时会发生什么?

您将被调用onDestroy()

我可以检测到这个事件吗?

您可以覆盖onDestroy().

我想强制(或至少验证)我的服务是进程中的单例。我该怎么做(或者 Android 在幕后强制执行此操作)?

服务是自然的单例。在任何给定时间,您的服务都会有 0 或 1 个实例。

对于上下文,我有一些我想在服务运行时分配和释放的资源(在“启动”中),以及另一组我想在服务处于“创建”状态时分配和释放的资源.

“创建”状态与命令模式 ( startService()and onStartCommand()) 和绑定模式 ( bindService()and onBind()) 一起使用。因此,如果您调用startService(),您的服务将完全处于“已创建”状态,希望不到一毫秒。

于 2012-04-19T21:46:35.360 回答