6

我有一个IntentService类,可以从复杂应用程序中的各个位置启动 - 活动、后台线程、其他服务。我想记录服务被调用的次数。我在我的 IntentService 类中使用一个私有 int 变量来跟踪它,我从我的onStartCommand(...)方法中递增它。

我突然想到,可以从各种异步线程调用 onStartCommand(...) 方法,这可能不是线程安全的解决方案。所以问题是,我是否需要将对该计数器变量的访问包装在同步块中,或者 onStartCommand(...) 的 IntentService 实现是否为我处理了这个?

作为说明,我知道我可以安全地从onHandleIntent(...)增加变量,但我需要计算实际请求而不是执行的意图。

4

1 回答 1

21

我突然想到,可以从各种异步线程调用 onStartCommand(...) 方法,这可能不是线程安全的解决方案。

onStartCommand()总是在任何服务的主应用程序线程上调用。您不能onStartCommand()同时在两个线程中被调用。

于 2012-06-24T13:29:31.220 回答