0

我正在实现一个连接到互联网服务器的 android 服务。服务在服务启动时创建会话,定期向服务器发送消息,最后在服务关闭时从服务器中删除会话。

从应用程序启动和停止服务工作正常,并且调用了 onCreate、onStartCommand 和 onDestroy()。我希望该服务能够在没有与 UI/活动的连接的情况下运行。这能够在启动时启动。

但是,如果我从 android 启动器关闭活动,则只会调用活动上的 onDestroy,而不是调用服务。当我使用 START_STICKY 时,系统会重新启动服务,再次调用 onCreate、onStartCommand。

那么如何检测到该服务第一次关闭,以便我可以将“注销”发送到我的服务器?或者替代检测重新启动,所以我不会再次“登录”?

我尝试使用静态布尔值来跟踪服务是否已启动(用户登录),但一旦服务重新启动,它似乎被重置为 false

4

1 回答 1

0

如果里面的代码onCreate正在执行,则服务正在运行,&& !sIsServiceRunning是没用的。onDestroy()不保证会被调用,系统可能会直接终止进程而不会提醒服务。

于 2013-01-14T11:27:19.550 回答