【发布时间】:2014-01-31 03:03:21
【问题描述】:
我有一项服务,我需要在静态上下文中检查一段时间后它是否仍在运行。 [我注意到这只发生在 Android KitKat 上]
我做了什么:
我的服务:
public class Servizio extends Service {
public static Service servizio;
[...Other things...]
@Override
public void onCreate() {
super.onCreate();
servizio = this;
scheduleMyAlarmToDoSomethingAfterSomeTime();
}
[...Other things...]
}
然后我从 onCreate 中的主 Activity 启动服务:
@Override
protected void onCreate(Bundle savedInstanceState) {
[...]
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ServizioUtility.toggleService(this, true);
[...]
}
然后我在一分钟后检查它是否为空(使用警报接收器,其警报由服务启动。请注意,接收器工作正常并调用以下代码):
if (Servizio.servizio!=null) {// FIXME
[...]
//THIS IS NOT CALLED IN THE 2ND SCENARIO
}
有两种情况:
- 我运行活动,等待警报启动,Servizio.servizio 不为空。
- 我运行活动,使用“杀死”它,等待调用警报接收器,Servizio.servizio 现在为空。请注意,另一方面,该服务仍在运行(从 Settings->App->Running 菜单检查)。
第二种情况发生了什么?
【问题讨论】:
-
查看类似问题(有解决方案)stackoverflow.com/q/20636330/624109
-
服务在设置->应用->运行中可能看起来正在运行,但实际上并没有运行。您可以通过让服务将文件写入 SD 或实际检查正在运行的进程来进行检查。它没有运行。
-
是的,看起来但不是,实际上服务单例是空的。