我有一个IntentService类,可以从复杂应用程序中的各个位置启动- Activity ,后台线程,其他服务。我想记下该服务被调用了多少次。我在IntentService类中使用了一个私有(private)int变量来跟踪它,我从onStartCommand(...)方法中增加了它。
这只是我想到的,因为可以从各种异步线程中调用onStartCommand(...)方法,所以这可能不是线程安全的解决方案。所以问题是,我需要将对这个计数器变量的访问包装在一个同步块(synchronized block)中,还是onStartCommand(...)的IntentService实现为我解决了这个问题?
需要注意的是,我知道我可以从onHandleIntent(...)中安全地增加变量,但是我需要对实际请求而不是已执行的 Intent 进行计数。
最佳答案
在任何服务中,总是在主应用程序线程上调用onStartCommand()
。不能同时在两个线程中用onStartCommand()
调用您。