gpt4 book ai didi

java - Intent 服务单例

转载 作者:搜寻专家 更新时间:2023-11-01 09:47:14 25 4
gpt4 key购买 nike

我想实现一个像 Singleton 一样的 Service

我需要我的应用程序检查屏幕是否被锁定,然后启动一个Listener IntentService。如果屏幕解锁,它将终止 Listener 服务。我创建了一个 ScreenLockService ,它是一个 IntentService 并且在用户选中开/关框时由 Home Activity 调用,因为我想要 Listener 即使应用程序未运行也能运行。

因此 Home Activity 运行并停止 ScreenLockService 服务,该服务将运行并停止 Listener 服务。

我的问题是 Home Activity 创建了 ScreenLockService 的多个实例,它还创建了 Listener 的多个实例.

所以我想让这两个 IntentServices 作为 Singletons 运行,但我不确定该怎么做。

我查看了很多教程,但它们要么过时了,要么不适合 IntentServices,例如: http://www.devahead.com/blog/2011/06/extending-the-android-application-class-and-dealing-with-singleton/ Singleton in Android

如有必要,我可以发布一些示例代码,但我真正想要的只是操作方法。

最佳答案

好吧,实现单例模式的基本思想是创建一个私有(private) [或 protected ] 构造函数(这意味着它不能从类外部访问)。该类还需要一个它自己类型的私有(private)字段(例如 private MyClass myObj;)接下来您需要的是公共(public)静态方法,称为 newInstance() 之类的东西,它返回通过 myObj 类的实例,如果它不为空,则实例化它:

public static MyClass newInstance(){
if (myObj == null) {
myObj = new MyClass();
}
return myObj;
}

当然它可以有更复杂的实现(构造函数不一定非得没有参数)。

现在这将始终创建所需类的一个实例。您需要做的就是始终在需要使用您的类的地方调用方法 newInstance。如果它已经被实例化,它将为您提供旧实例,如果没有,它将创建它。

希望这就是您正在寻找的解释。

关于java - Intent 服务单例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37555231/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com