我正在玩服务和对话,我有一个疑问。 在对话框中,我正在启动这样的服务:
Intent lock = new Intent(getActivity(),AppLockService.class);
getActivity().stopService(lock);
getActivity().startService(lock);
现在我第一次通过
调用对话框dialog_name.show(getFragmentManager(), "dropbox");
按下OK按钮后,意图启动。现在稍后,在相同应用程序执行期间,再次触发对话框(根据我的代码逻辑 - 这里没有错误)。然后,对话框中的代码停止先前触发的意图,启动新意图。
我的问题是:
根据我的定义,lock 是本地意图变量。那么它怎么知道它必须停止我第一次在这里触发的特定服务?请有人向我解释一下吗?
答案 0 :(得分:1)
您无需跟踪变量中的服务,因为Android会为您执行此操作。
操作系统处理服务的方式是,它不允许在任何时间运行多个服务实例。
所以在任何时候你的服务都有0或1个实例。如果有0,没问题,操作系统将忽略对StopService
的调用。如果有1个实例,则它必须是您之前启动的实例 - 因此它将停止该实例。