Android 在安卓系统中,服务声明为静态服务时,是否可能遇到竞争条件?
我对Android中某些服务的发布有以下结构: 我有一个初始服务,它检查启动某些服务所需的某些条件是否满足,如果满足这些条件,服务将启动 当这些服务要执行其关键操作时,会检查这些条件是否仍然适用,如果不适用,则会自行停止,以及所有可能因该条件而得到错误结果的其他服务。然后他们调用初始服务,该服务将继续检查这些条件,一旦满足这些条件,它将自行完成并再次启动服务 保持初始服务永久运行是没有用的,因为某些条件与任何android事件无关,所以唯一的方法是在无限循环中检查它们,当这些条件满足时,循环将中断,这相当消耗电池 两个服务可能同时尝试创建相同的初始服务 我的意思是可能出现这样的情况: 服务1: 查找此代码以初始化服务:Android 在安卓系统中,服务声明为静态服务时,是否可能遇到竞争条件?,android,service,synchronization,Android,Service,Synchronization,我对Android中某些服务的发布有以下结构: 我有一个初始服务,它检查启动某些服务所需的某些条件是否满足,如果满足这些条件,服务将启动 当这些服务要执行其关键操作时,会检查这些条件是否仍然适用,如果不适用,则会自行停止,以及所有可能因该条件而得到错误结果的其他服务。然后他们调用初始服务,该服务将继续检查这些条件,一旦满足这些条件,它将自行完成并再次启动服务 保持初始服务永久运行是没有用的,因为某些条件与任何android事件无关,所以唯一的方法是在无限循环中检查它们,当这些条件满足时,循环将中
public static Intent myinitialService=null;
[...]
if (StaticMethods.myinitialService==null)
{
StaticMethods.myinitialService= new Intent(getBaseContext(),myinitialService.class);
startService(StaticMethods.myinitialService);
}
同时,有一个service2可以同时读取“if(StaticMethods.myinitialService==null)”,导致service1和service2启动相同的初始服务,这也可能导致每个服务创建一个以上的服务,依此类推
但我认为,只要将变量声明为静态变量,就不可能发生这种情况,即使发生类似的情况,也只有一个服务会启动,但我想确定,如果不是这样,可以做些什么来避免这种情况。实际上,服务只创建一次(如果未调用stopSelf或stopService)。随后的startService()调用不会创建服务,而是向其发送onStartCommand事件。@user1055395,谢谢您的回答,但这对我的问题没有帮助,即使没有启动新的服务,它也可能最终执行不需要的代码。