Android 是一个IntentService';s onStartCommand(..)方法是否线程安全?

Android 是一个IntentService';s onStartCommand(..)方法是否线程安全?,android,thread-safety,intentservice,Android,Thread Safety,Intentservice,我有一个类,可以从复杂应用程序中的不同位置启动—活动、后台线程和其他服务。我想保留一个计数器,记录服务被调用的次数。我在我的IntentService类中使用一个私有int变量来跟踪它,我从我的方法中递增它 我突然想到,由于可以从各种异步线程调用onStartCommand(…)方法,这可能不是线程安全的解决方案。所以问题是,我需要将对这个计数器变量的访问封装在一个同步块中,还是onStartCommand(…)的IntentService实现为我解决了这个问题 值得注意的是,我知道可以安全地从

我有一个类,可以从复杂应用程序中的不同位置启动—活动、后台线程和其他服务。我想保留一个计数器,记录服务被调用的次数。我在我的IntentService类中使用一个私有int变量来跟踪它,我从我的方法中递增它

我突然想到,由于可以从各种异步线程调用onStartCommand(…)方法,这可能不是线程安全的解决方案。所以问题是,我需要将对这个计数器变量的访问封装在一个同步块中,还是onStartCommand(…)的IntentService实现为我解决了这个问题

值得注意的是,我知道可以安全地从中递增变量,但我需要计算实际请求的数量,而不是执行意图的数量

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


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

每天学习新事物。谢谢@digitizedx:什么不是线程安全的
onStartCommand()
是,因为它只在主应用程序线程上调用过。很抱歉,我不清楚。这可能与这个问题无关,我也有一个类似的问题,我从广播接收器开始服务。有一次我同时得到两个广播。我看到与应用程序关联的contentprovider的onCreate()被调用了两次。所以我怀疑startService不是线程安全的,因为它试图创建两次服务。