由局部变量引用的服务,但在函数调用之间保持值

时间:2014-01-20 12:03:34

标签: android android-intent

我正在玩服务和对话,我有一个疑问。 对话框中,我正在启动这样的服务:

  Intent lock = new Intent(getActivity(),AppLockService.class);
            getActivity().stopService(lock);
                getActivity().startService(lock);

现在我第一次通过

调用对话框
dialog_name.show(getFragmentManager(), "dropbox");

按下OK按钮后,意图启动。现在稍后,在相同应用程序执行期间,再次触发对话框(根据我的代码逻辑 - 这里没有错误)。然后,对话框中的代码停止先前触发的意图,启动新意图。

我的问题是:

根据我的定义,

lock 本地意图变量。那么它怎么知道它必须停止我第一次在这里触发的特定服务?请有人向我解释一下吗?

1 个答案:

答案 0 :(得分:1)

您无需跟踪变量中的服务,因为Android会为您执行此操作。

操作系统处理服务的方式是,它不允许在任何时间运行多个服务实例。

所以在任何时候你的服务都有0或1个实例。如果有0,没问题,操作系统将忽略对StopService的调用。如果有1个实例,则它必须是您之前启动的实例 - 因此它将停止该实例。