意图服务单身

时间:2016-05-31 20:39:45

标签: java android singleton

我想实现一个Service,就像Singleton

我需要我的应用来检查屏幕是否已锁定,然后启动Listener IntentService。如果屏幕解锁,它将终止Listener服务。 我创建了一个ScreenLockService IntentService,如果用户选中了开/关框,则由Home活动调用,因为我希望Listener能够运行,即使应用程序未运行。

因此Home活动会运行并停止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

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

1 个答案:

答案 0 :(得分:2)

实现Singleton模式的基本思想是创建一个私有[或受保护]构造函数(这意味着它不能从类外部访问)。该类还需要一个自己类型的私有字段(例如mingw32-make.exe;)接下来你需要的是名为private MyClass myObj的公共静态方法,它通过newInstance()返回类的实例如果它不为null,则实例化它:

myObj

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

现在,这将始终只创建所需类的一个实例。您需要做的就是始终在需要使用班级的地方调用方法public static MyClass newInstance(){ if (myObj == null) { myObj = new MyClass(); } return myObj; } 。如果它已经实例化,它将为您提供旧实例,如果没有,它将创建它。

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